0

机器如何知道为通用指针分配多少空间?它仅在转换为类型时才分配吗?

4

4 回答 4

3

我不确定您所说的“通用指针”是什么意思,但如果您的意思是“指向 void 的指针”,它只是一种能够表示任何其他指针值的类型。这并不意味着它必须任意大。实际上,它(定义为)与“指向字符的指针”相同的大小和表示形式,也可以指向任何类型。

于 2012-05-20T23:20:34.360 回答
1

在大多数平台上,指针通常具有固定大小,具体取决于您正在编译的系统的内存架构。就这一点而言,他们的类型是无关紧要的。一个int点的大小与一个复杂点的大小相同struct。它的事实void并没有改变这一点。

于 2012-05-20T23:16:44.737 回答
1

所有指针的大小都是编译器在编译时已知的;指向的项目的大小可能不同。您将所需的大小传递给malloc/calloc自己,因此编译器在分配方面没有问题。

编辑(回应评论)有些情况下不同指针的大小不同。例如,在为哈佛架构编译的代码中,数据指针必须包含一个额外的存储空间,用于区分存储在程序存储器中的数据和存储在数据存储器中的数据,而函数指针不需要额外的存储空间。但是,编译器知道这一点,因此它通过查看指针的类型就知道所需的分配大小。

于 2012-05-20T23:16:59.797 回答
0

无论指针指向什么,指针的大小都相同,只是它们指向的东西大小可以不同。

于 2012-05-20T23:18:54.237 回答