【发布时间】:2018-05-23 11:33:08
【问题描述】:
最近,我了解到.bss 段存储未初始化的数据。但是,当我尝试如下的小程序并在终端中使用size(1) 命令时,即使我添加了一些全局变量,.bss 段也没有改变。我是不是误会了什么?
jameschu@aspire-e5-573g:~$ cat test.c
#include <stdio.h>
int main(void)
{
printf("hello world\n");
return 0;
}
jameschu@aspire-e5-573g:~$ gcc -c test.c
jameschu@aspire-e5-573g:~$ size test.o
text data bss dec hex filename
89 0 0 89 59 test.o
jameschu@aspire-e5-573g:~$ cat test.c
#include <stdio.h>
int a1;
int a2;
int a3;
int main(void)
{
printf("hello world\n");
return 0;
}
jameschu@aspire-e5-573g:~$ gcc -c test.c
jameschu@aspire-e5-573g:~$ size test.o
text data bss dec hex filename
89 0 0 89 59 test.o
【问题讨论】:
-
尝试添加
int big[1024]左右。 bss 的基本大小可能不会随三个变量而改变。 -
SIZE command in UNIX的可能重复
-
该命令显示大小它不修改大小。我很感激这不是你的意思,但那是你写的。语义在自然语言和代码中都很重要。我更改了标题,所以这个问题在语义上是正确的,而且是关于 BSS 和编译器,而不是关于 size 命令。