c 运行时使用什么数据结构来存储有关变量的信息,如类型、大小等
前任:
void foo(){
int bar=0, goo=44;
int*q, *p = &goo;
//some code follows
bar = goo + bar*9;
...
q=p;
...
}
Run Code Online (Sandbox Code Playgroud)
在上面的代码中,我们有局部变量 bar 和 goo,当控制权到达 foo 函数时,它们将在堆栈上分配。但是,运行时稍后将如何确定当这些变量被引用时,这些变量是某某类型和某某大小?
运行时不保留任何此类信息 - 它被编译成编译器生成的二进制代码作为常量。编译器知道每种类型的大小,因此它知道如何生成正确的机器代码来清理堆栈、访问数组元素、访问结构体的字段等。无需在运行时保留此信息,因为二进制代码已经包含所有适当的指令。
| 归档时间: |
|
| 查看次数: |
1305 次 |
| 最近记录: |