2017-06-21 100 views
2

我在一些网站上看到这一点,其结果很惊讶:为什么bss在这种情况下有一些价值?

#include <stdio.h> 

int main(void) 
{ 
    return 0; 
} 

当上面的代码检查每个部分内存使用size

$ gcc memory-layout.c -o memory-layout 
$ size memory-layout 
text  data  bss  dec  hex filename 
960  248   8  1216  4c0 memory-layout 

这里, 没有任何全局或静态变量,bss的大小显示为8。我没有得到这8个字节的使用情况?

回答

1

您正在查看完整可执行程序的段大小:源代码的目标模块链接到标准库启动代码和必要的库支持函数,如exit。您看到的databss的数字可能是由这些模块定义的全局对象造成的。特别要注意的是,main函数难以证明960字节的代码。

生成只是一个目标文件,并运行对size

$ gcc -c memory-layout.c 
$ size memory-layout.o 
相关问题