为什么二进制文件中有这么多零?

  • 本文关键字:二进制文件 c++ g++
  • 更新时间 :
  • 英文 :


让我用这个简单的Hello world程序作为例子:

#include <iostream>
using namespace std;
int main() {
cout << "Hello world!";
}

编译:g++ hello.cpp

在文本编辑器中快速检查二进制文件,似乎得到的二进制文件中大约有一半只有零,其中大多数都是大块的。

我不担心它,但似乎奇怪的是,编译器会浪费一堆空间。拥有这些未使用的大块是否有一个很好的理由?

程序文件由一些元数据、可执行代码、只读数据、数据组成。它们中的每一个都与系统的页面大小对齐,以便可以将它们映射到内存中。那些"未使用的大块";只是填充,让所有东西对齐。它看起来很大,只是因为你的程序基本上什么都没有。

最新更新