gpt4 book ai didi

c - 为什么简单的程序会占用这么多的存储空间?

转载 作者:行者123 更新时间:2023-12-04 01:06:35 24 4
gpt4 key购买 nike

我用 C 语言创建了一个简单的 hello world 程序,如下所示:

#include <stdio.h>

int main() {
printf("Hello World!\n");
return 0;
}
之后,我在 Mac 上使用 gcc 编译它并使用 xxd 转储它。每行 16 个字节(8 个字),编译后的程序总共有 3073 行或 49424 个字节。在所有这些字节中,只有 1 904 个字节组成了程序,而其余的 47 520 个字节都是零。
考虑到只有大约 3.9% 的字节不是零,这是一个明显的空间浪费示例。有没有办法在这里优化可执行文件的大小? (顺便说一下,我已经尝试使用 -Os 编译器选项,但没有得到任何结果。)
编辑:我通过计算 hexdump 的行数得到这些数字,但在包含实际指令的行中也有零。我没有计算这些字节,因为它们可能对程序的执行至关重要。 (就像字符串 Hello World! 的空终止符)我只计算完整的零块。

最佳答案

生成的文件不仅仅包含您的程序所需的代码和数据。它还包含正确加载和执行程序所需的元数据。一般来说,这个元数据可能会被拆分成多个section,每个section需要在一定的边界对齐。为此,可能会添加一些零以进行填充。对较大的程序进行相同的检查将减少元数据和填充占用的空间。

关于c - 为什么简单的程序会占用这么多的存储空间?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66260709/

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