elf文件中.bss段:
存放未初始化的全局变量,将.data和.bss分开的理由是为了节约磁盘空间,.bss不占实际的磁盘空间。这句话该怎么理解呢?
可以看下面的例子:
#include <stdio.h>
int a[1000];
int b[1000] = {1};
int main()
{
printf("123\n");
return 0;
}
这里编写了一个test.c
的文件,gcc编译gcc test.c -o test
之后,使用ls -l test
命令可以得到可执行文件的信息,我们只关注文件的大小为12608。
使用命令size test
查看各个段的大小(不包含stack和heap段):