我在某个网站上看到了这个,并对结果感到惊讶:
#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个字节的用途?
答案 0 :(得分:1)
您正在查看完整可执行程序的段大小:源代码的对象模块链接到标准库启动代码和必要的库支持函数,例如exit
。您在data
和bss
看到的数字可能是由这些模块定义的全局对象引起的。请特别注意,main
函数几乎不能证明960字节的代码。
仅生成一个目标文件并在其上运行size
:
$ gcc -c memory-layout.c
$ size memory-layout.o