我有简单的代码如下:
#include
int glob;
int main(void)
{
int a;
printf("&a is : %p \n", &a);
printf("glob is : %p \n", &glob);
return 0;
}
上述方案的产出是:
第一次运行:
&a is : 0x7fff70de91ec
glob is : 0x6008f4
第二次运行:
&a is : 0x7fff38c4c7ac
glob is : 0x6008f4
我正在研究虚拟&物理地址.我有以下问题:
>哪个是变量“a”的打印地址(物理/虚拟)?
>如果是虚拟的,那么在同一个程序的每次运行中它会如何变化?
正如我所理解的,编译器在编译时向变量提供虚拟地址?
>为什么每个程序运行中全局变量的地址是不变的?
在Linux上执行此程序:2.6.18-308.el5 x86_64 GNU / Linux
编译使用:gcc版本4.1.2 20080704(红帽4.1.2-52)