文字区域的大小

时间:2012-06-26 13:18:25

标签: c gcc memory-layout

考虑以下计划:

#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,就我可以计算而言,这相对于指令的大小来说太大了。

1 个答案:

答案 0 :(得分:3)

原因可能是因为程序的实际启动实际上并不是main函数,而是在链接阶段添加了一段代码。此代码在调用BSS函数之前设置库,清除main段和其他初始化。还有一些代码可确保从main返回时所有内容都已正确清理。