BSS是程序文件的一部分吗?

时间:2011-05-22 08:33:16

标签: c memory layout memory-management

  

可能重复:
  .bss section in elf file

您好,

BSS(Block started by symbol)是程序文件(a.out)的一部分。假设我的c程序中声明了一个全局变量char buf[2048]。我从我的c程序(a.out)中创建了一个可执行文件。 buf的2048字节是否属于a.out的一部分?或者buf仅在执行程序文件期间分配所需的内存量?

当size命令显示为文本段,初始化数据段和可执行文件的BSS(a.out)分配的内存时,我感到困惑

1 个答案:

答案 0 :(得分:4)

不,2048字节实际上不占用文件'a.out'中的任何空间,假设您有一个现代Linux操作系统,其中文件'a.out'的格式实际上是ELF,而不是格式以“a.out”命名,以前就是这种情况。有关ELF格式的更多信息,请参阅http://en.wikipedia.org/wiki/Executable_and_Linkable_Format