0

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

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

可执行文件本身大小为 6kb,我没有包含任何标题。即使整个exe文件被复制到内存中,显然它不应该占用超过7 kb,但是操作系统分配了320 kb,这是为什么呢?我正在使用窗户。

4

1 回答 1

2

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

  • 该程序很明显是一个无限循环,它解释了为什么它没有结束(或者你所说的“挂起”)。
  • 编译器/链接器仍然需要为你的操作系统编写一个有效的可执行文件,这涉及到一堆头文件和东西,很容易消耗 6kb。
  • 目前主流操作系统中的 320kb 似乎几乎没有,主要是操作系统开销。在不知道什么操作系统的情况下很难说更多。

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

于 2013-03-31T21:33:17.037 回答