bss段,只是给未初始化变量进行预留空间进行必要的记录,里面记录的内容并占用变量的实际大小
1 #include <stdio.h>
2
3 #ifdef UNINIT_VAR
4 char a[1024];
5 #endif
6
7 int main(int argc, char ** argv)
8 {
9 printf("hello\n");
10 return 0;
11 }
分别带宏UNINIT_VAR和不带,编译得到test_with_uninit_var和test_without_var,二者大小如下
ls -al test_with*
-rwxr-xr-x 1 root root 7303 Aug 30 00:30 test_without_var
-rwxr-xr-x 1 root root 7321 Aug 30 00:30 test_with_uninit_var
size test_with*
text data bss dec hex filename
1102 280 4 1386 56a test_without_var
1102 280 1056 2438 986 test_with_uninit_var
增加了18字节,并不是1024个字节
网友评论