我在一些网站上看到了这一点,并对结果感到惊讶:
#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个字节是怎么用的?
发布于 2017-06-21 06:10:05
您正在查看完整可执行程序的段大小:源代码的对象模块链接到标准库启动代码和必要的库支持函数(如exit )。您看到的data和bss的数字可能是由这些模块定义的全局对象造成的。特别要注意的是,您的main函数很难证明960字节的代码是正确的。
只生成一个对象文件并在该文件上运行size:
$ gcc -c memory-layout.c
$ size memory-layout.ohttps://stackoverflow.com/questions/44667934
复制相似问题