考虑以下计划:
#include <stdio.h>
int main(void)
{
return 0;
}
当我运行以下命令时:
gcc memory-layout.c -o memory-layout size memory-layout
我得到的输出为:
text data bss dec hex filename 960 248 8 1216 4c0 memory-layout
由于文本区域包含程序的可执行指令,为什么输出显示文本区域的大小为960,就我可以计算而言,这相对于指令的大小来说太大了。
答案 0 :(得分:3)
原因可能是因为程序的实际启动实际上并不是main
函数,而是在链接阶段添加了一段代码。此代码在调用BSS
函数之前设置库,清除main
段和其他初始化。还有一些代码可确保从main
返回时所有内容都已正确清理。