内存中的内容如何以及在何处存储有关变量类型的信息?

时间:2013-11-29 06:20:31

标签: c++ c variables memory compiler-construction

显然编译器必须存储信息,无论变量x是unsigned int还是signed int,float等等,但是在哪里以及如何?

是否有某种查找表?我在内存中找到它,在可执行文件的哪个部分?

2 个答案:

答案 0 :(得分:4)

在编译器选择的指令中是隐含的。

例如,如果地址18包含float,则编译器可以使用指令从地址18加载浮点寄存器。如果地址20处的邻居包含int,则编译器可以从先前的地址加载一个整数寄存器+2。

如前所述,编译器有一个符号表,因此它知道所有变量的位置。这允许它选择正确的指令。但是,您不能简单地从单个指令中获取该符号表的内容。

答案 1 :(得分:2)

除非启用调试信息,否则C和C ++实现通常不会在任何地方存储变量名称。正常执行不需要变量名,但共享对象或DLL中的导出符号除外。