为什么操作系统会分配比小型可执行文件所需的更多内存?

时间:2013-03-31 21:26:51

标签: c++ c memory memory-management

好的,所以我编写了这个最小的C代码并将其编译为发布模式下的可执行文件

1.void main()
2.{ for(;;); } //this is here to make the app hang.

可执行文件大小本身是6kb,我没有包含任何标头。即使整个exe文件被复制到ram,显然它不应该占用超过7 kb,但是OS分配320 kb,为什么呢?我正在使用Windows。

1 个答案:

答案 0 :(得分:2)

看起来你很困惑并且混合了各种各样的概念。让我试着解释一下:

  • 该程序非常明显是一个无限循环,它解释了为什么它没有结束(或者你称之为“挂起”)。
  • 编译器/链接器仍然需要为您的操作系统编写一个有效的可执行文件,这涉及到一堆标题和内容,这可能很容易消耗6kb。
  • 此时主流操作系统中320kb似乎几乎没有任何东西,主要是操作系统开销。如果不知道什么操作系统,很难说更多。

我强烈建议您反汇编代码。另一种选择是使用您的编译器选项来优化可执行文件大小。我认为最重要的是你期望由于你的程序没有做任何有用的事情,它的大小应该为零,这是一个不合理的期望。