空间示意图(32位)
bss段,data段,text段
未初始化的全局变量、静态局部变量,存储在.bss段中,具体体现为一个占位符;
已初始化的全局变量、静态局部变量,存储在.data段中;
此外,非静态局部变量,都在栈中分配空间。
.bss 是不占用.exe文件空间的,其内容由操作系统初始化(清零);
.data 却需要占用,其内容由程序初始化。因此造成了上述情况。
bss 段,不为数据分配空间,只是记录数据所需空间的大小;
bss 段的大小从可执行文件中得到 ,然后链接器得到这个大小的内存块,紧跟在data段后面。
data 段,则为数据分配空间,数据保存在目标文件中;
data 段包含经过初始化的全局变量以及它们的值。
作者:JamFF
链接:https://www.jianshu.com/p/ddfb284c1f7a
来源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
堆,栈
https://www.jianshu.com/p/431dbb8878fb