我开发了一个简单的C程序,如下所示。
int main()
{
return 0;
}
我使用gcc v5.2.1编译了程序。当我在下面的可执行文件上运行Unix命令'size'时,它是显示的大小。
根据我的理解,数据部分保存初始化的全局数据,而BSS保存未初始化的全局数据。尽管没有全局变量,为什么“数据”和“BSS”部分显示非零值?
最佳答案
简而言之:因为您的最终程序具有而不是您编写的部分更多的代码。它必须包含一些运行时,例如完成所有必要的设置,然后才能调用main()
(例如填充argv
,将.bss
中的数据初始化为零,等等)以及退出后进行清理。此代码中的确切完成完全取决于您的实现。