存储变量类型信息的方式和位置?

时间:2014-12-15 08:20:54

标签: c pointers types

如果我为int分配了内存,我将(通常)给出4个字节。据我所知,这4个字节组成了这个变量在内存中的整个足迹。

此外,如果我有一个指向此int的指针,它将保存其4个字节中第一个的地址。

但是,我的程序如何知道这4个字节中的数据类型是否包含单个int?由于我的指针只保存了这个地址,据说只保存原始数据,它如何知道每当它所拥有的地址被解引用时,它应该被解释为一个int?

此类型信息在哪里,以及程序如何以及何时访问它?

1 个答案:

答案 0 :(得分:7)

编译C程序后,类型信息基本上会丢失(换句话说,不再需要它)。这是因为C中任何内存字节的解释都取决于读取它们的代码。例如,您可以将int作为char[4]读取,而不会出现任何问题。

出于特殊原因(例如调试),在某些情况下可能会保留类型信息。但这是以特定于平台的格式存储的(例如Linux上的DWARF),并且根本不属于C标准。