gpt4 book ai didi

c - 为什么在添加初始化静态变量时 .bss 大小会减小?

转载 作者:行者123 更新时间:2023-12-04 15:36:30 26 4
gpt4 key购买 nike

我知道 .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/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com