【发布时间】:2015-02-13 07:17:12
【问题描述】:
如果我为 int 分配了内存,我将(通常)获得 4 个字节。据我了解,这 4 个字节构成了该变量在内存中的全部占用空间。
此外,如果我有一个指向这个 int 的指针,它将保存 4 个字节中第一个字节的地址。
但是,我的程序如何知道这 4 个字节中的数据类型由单个 int 组成?而且由于我的指针只保存这个地址,据说它只保存原始数据,它怎么知道每当它持有的地址被取消引用时,它应该被解释为一个 int?
此类型信息在哪里,程序如何以及何时访问它?
【问题讨论】:
-
it should be interpreted as an int..嗯,这就是为什么它是int *,而不是char *或float * -
信息在源代码中,编译器生成机器码以尊重源代码中的规范。获得访问权限是编译器的工作。
-
它不存储在编译程序的任何地方。处理它的是编译器。
-
在弱类型语言中可能需要它,但在 C 等强类型语言中则不需要
-
我猜你可能也对 malloc 块的大小感兴趣:stackoverflow.com/a/21185118/880584