我在学习时遇到了一些问题.我知道C中未初始化的全局变量被分配给可执行ELF文件中的.bss部分.但是当我开始使用它们时会发生什么?即他们在堆上或其他地方获得了一席之地?
我试图通过打印(仍然未初始化的)全局变量的地址来找出
printf("%x",&glbl);
Run Code Online (Sandbox Code Playgroud)
总是返回相同的值0x80495bc ...为什么?
当操作系统加载程序时,它会从程序的地址空间分配足够的存储空间,以便将所有内容存储在.bss部分中,并将所有内存归零.当您分配或读取或获取变量的地址时,您正在操作分配给.bss部分存储的内存.