小编deb*_*deb的帖子

为什么局部静态变量是 BSS 段的一部分?

静态内存布局的 BSS 部分[应该]用于“未初始化的全局变量”或“全局变量设置为 0”。

\n

我正在运行一些测试,突然注意到局部静态变量也在增加 BSS 段的大小。

\n

例子 :-

\n

在任何静态变量之前

\n
int main (int argc, char argv[])\n{\n    return 0;\n}\n
Run Code Online (Sandbox Code Playgroud)\n
data/repos/e-c \n\xe2\x9d\xaf size a.out \n   text   data     bss     dec     hex  filename\n   1418    544       8    1970     7b2  a.out\n
Run Code Online (Sandbox Code Playgroud)\n

静态变量之后

\n
int main (int argc, char *argv[])\n{\n    static int a, b, c;\n    return 0;\n}\n
Run Code Online (Sandbox Code Playgroud)\n
data/repos/e-c \n\xe2\x9d\xaf !s\nsize a.out \n   text   data     bss     dec     hex  filename\n   1418    544      16    1978     7ba  a.out\n
Run Code Online (Sandbox Code Playgroud)\n

这些变量肯定不是全局变量,那为什么BSS段会增加呢?或者“未初始化的全局变量的段”的想法不完全正确?

\n

目前我使用的是 …

c c++ gcc

2
推荐指数
1
解决办法
1818
查看次数

标签 统计

c ×1

c++ ×1

gcc ×1