为什么bss在这种情况下有一些价值?

时间:2017-06-21 06:01:19

标签: c

我在某个网站上看到了这个,并对结果感到惊讶:

#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 个答案:

答案 0 :(得分:1)

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

仅生成一个目标文件并在其上运行size

$ gcc -c memory-layout.c
$ size memory-layout.o