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

C 为什么bss在这种情况下有一些价值?,c,C,我在某个网站上看到了这一点,并对结果感到惊讶: #include <stdio.h> int main(void) { return 0; } 这里,, 在没有任何全局或静态变量的情况下,bss的大小显示为8。我没有得到这8个字节使用的是什么?您正在查看完整可执行程序的段大小:源代码的目标模块链接到标准库启动代码和必要的库支持功能,如退出。您看到的data和bss的数字可能是由这些模块定义的全局对象造成的。请特别注意,main函数几乎不能证明960字节的代码是正确的 仅生

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

#include <stdio.h>

int main(void)
{
    return 0;
}
这里,,
在没有任何全局或静态变量的情况下,
bss
的大小显示为
8
。我没有得到这8个字节使用的是什么?

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

仅生成一个对象文件,然后在该文件上运行
size

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