c++ - 编译器如何以及在内存中的什么位置存储有关变量类型的信息?

标签 c++ c variables memory compiler-construction

显然,编译器必须存储变量 x 是 unsigned int 还是 signed int、float 或其他什么的信息,但是在哪里以及如何存储?

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

最佳答案

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

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

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

关于c++ - 编译器如何以及在内存中的什么位置存储有关变量类型的信息?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20279568/

相关文章:

c++:仅cin整数

c++ - 如何打印double变量中包含的正确位数?

c - .rodata 搬迁相关问题

string - 如何在Stata中将字符串变量转换为数字变量?

javascript - 将用户输入保存在变量中,然后发布该变量

c++ - 如何在 std::map 中添加对 vector 作为值?

c++ - fputs() 之后的第二个 fgets() 不等待输入

c - 如何获取字符或数字的位值

c - 段错误: 11 (C programming)

php - 最佳分层 php 语法,用于将变量分配给已设置的值