我知道 .bss
的默认对齐方式对于 GCC 是 8 字节,正如这个问题中提到的 Why the int type takes up 8 bytes in BSS section but 4 bytes in DATA section
所以对于这个程序:
int main(){
return 0;
}
我有这样的东西:
text data bss dec hex filename
1418 544 8 1970 7b2 test
当我添加一个带有初始化的静态变量以增加 .data
时(确实如此):
static int var = 255;
int main(){
return 0;
}
我看到 .bss
的大小也减少了 4 个字节:
text data bss dec hex filename
1418 548 4 1970 7b2 test
请告诉我为什么?
最佳答案
.bss
具有未初始化全局变量的大小。这些将在程序加载时初始化为零。
如果您将全局变量初始化为非零值,它将不再位于 .bss
中,而是位于 .data
段中。数据段包含所有已初始化的全局变量(及其初始值)。
因此,.bss
的大小减小,而 .data
的大小增加。
关于c - 为什么在添加初始化静态变量时 .bss 大小会减小?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59562193/