我在同一台机器上多次运行这个程序。
#include <stdio.h>
int a = 0;
int main() {
int b = 0;
printf("%p %p\n", &a, &b);
}
- 每次打印变量的相同地址时
a
,b
它都会改变。我知道a
会进入该.data
部分,因此地址是固定的(如果我错了,请纠正我)但是为什么每次堆栈都会获得不同的地址? - 所有这些地址都是虚拟的。是否可以从这些变量中获取物理地址?
- 如果一个全局变量被初始化为零,它会去哪里,BSS 还是数据?