当前位置:   article > 正文

关于bss段的理解_bss不分配空间

bss不分配空间

bss段是不会出现在程序下载文件(*.bin *.hex)中的,因为全都是0。如果把它们出现在程序下载文件中,会增加程序下载文件的大小。实际应用中,通常只需要把bss段的起始地址和结束地址(或大小)保存起来,而不需要将程序下载文件中出现bss段(一堆0)将来真正运行程序的时候,再根据这两个数据进行bss段的初始化就行了。

.bss不占据程序可执行程序大小,只在段表中记录大小,在符号表中记录符号。当文件加载运行时,才分配空间以及初始化。

bss段的大小,记录在段表里里,记录的是所有未初始化变量总共的大小,bss段只在段表里有个记录,但实现并不存在这个段.

static int g;
static short int h;
int main(){}

用readelf -S 或 objdump -h 查看段表:

每个未初始化的变量的大小放在了符号表里。
你看下面符号表中的4 ,2分别就是g,h的大小。
用readelf -s 或 objdump -t 查看符号表:

 


 

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/繁依Fanyi0/article/detail/319470?site
推荐阅读
相关标签
  

闽ICP备14008679号