提问人:wdl4076 提问时间:11/9/2023 最后编辑:Ian Abbottwdl4076 更新时间:11/9/2023 访问量:76
C语言编程内存布局的大小变化
size variation in memory layout of c programming
问:
我的代码:
#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。
如果有人能解释这里发生的事情以及为什么,那会很有帮助?
答: 暂无答案
评论
gcc -S file16.c
file16.s