关于用户内存使用的笔记

空间示意图(32位)

bJa0bD.png
.data在低地址,.bss在高地址

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