如果我为int分配了内存,我将(通常)给出4个字节.据我所知,这4个字节组成了这个变量在内存中的整个足迹.
此外,如果我有一个指向此int的指针,它将保存其4个字节中第一个的地址.
但是,我的程序如何知道这4个字节中的数据类型由单个int组成?由于我的指针只保存了这个地址,据说只保存原始数据,它如何知道每当它所拥有的地址被解引用时,它应该被解释为一个int?
这种类型的信息在哪里,程序如何以及何时访问它?
编译C程序后,类型信息基本上会丢失(换句话说,不再需要它).这是因为C中任何内存字节的解释都取决于读取它们的代码.例如,您可以将四字节读取int为char[4]没有问题.
出于特殊原因(例如调试),在某些情况下可能会保留类型信息.但这是以特定于平台的格式存储的(例如Linux上的DWARF),并且根本不是C标准的一部分.