C语言编程内存布局的大小变化

size variation in memory layout of c programming

提问人:wdl4076 提问时间:11/9/2023 最后编辑:Ian Abbottwdl4076 更新时间:11/9/2023 访问量:76

问:

我的代码:

#include <stdio.h>

static int i;

int main()
{
    return 0;
}

我从命令提示符输出:

PS E:\Programs\C\Programmieren in C> size file_16.exe
   text    data     bss     dec     hex filename
   2957    1928     480    5365    14f5 file_16.exe
PS E:\Programs\C\Programmieren in C> gcc file_16.c -o file_16.exe
PS E:\Programs\C\Programmieren in C> size file_16.exe
   text    data     bss     dec     hex filename
   2957    1928     448    5333    14d5 file_16.exe

考虑到我的 c 代码,我正在尝试可视化数据和 bss 层中的可变大小分配。我似乎不明白那里到底发生了什么。首先,我定义并声明,然后在 cmd 中可视化 bss 层的大小。然后我将其初始化为某个值,假设为 24,然后再次运行它。bss 层的大小减少了 32 个字节,而不是 4 个字节。但是数据层没有变化,正如我所期望的那样。static int i;

PS:我在代码块中运行此代码并使用GCC。

如果有人能解释这里发生的事情以及为什么,那会很有帮助?

C 调试 内存管理

评论

3赞 AKX 11/9/2023
请不要发布您的代码并输出为图像。
0赞 wdl4076 11/9/2023
那么我该如何附加它呢?
0赞 AKX 11/9/2023
通过将文本复制粘贴到您的问题中。
0赞 pmg 11/9/2023
将文本缩进 4 个空格,以便将其格式化为代码。否则,只需在输出的上方和下方留下空行:我们将:)弄清楚
1赞 pmg 11/9/2023
您可能希望从代码中创建汇编程序,并确切地查看哪些内容在哪里... ,然后检查创建的文件gcc -S file16.cfile16.s

答: 暂无答案