代码之家  ›  专栏  ›  技术社区  ›  Calmarius

Visual C++express 2008:为什么它在发布的可执行文件末尾放置大量空字节?

  •  3
  • Calmarius  · 技术社区  · 16 年前

    最近我发现我的发布可执行文件(用msvc++express 2008制作)变得非常大。当我用十六进制查看器检查可执行文件时,我看到只有前300k字节包含有用数据,其余字节只有零——6兆字节的零字节。

    调试内置exe的大小为1MB,但版本为6.5MB。

    为什么MSVC++express会做那些无用的事情?我该如何修复它?

    3 回复  |  直到 16 年前
        1
  •  10
  •   zvrba    16 年前

    您是否在程序的文件范围内定义了大型数组?这可能是一个原因。您可以使用垃圾箱程序查看exe文件中的每个部分占用了多少空间,这应该会给您一个“为什么”的线索。

        2
  •  2
  •   Ismael Philip Pryde    16 年前

    也许您在版本中静态链接.exe,但在调试中动态链接?选中这是“项目属性”对话框。

    另一种可能性是,在发布模式下,很多函数都是内联的,或者你使用了很多模板。

    您可以在“项目属性”对话框中告诉编译器优化大小。

        3
  •  0
  •   Eli Bendersky    16 年前

    版本比Debug大6倍——可能出了什么问题。 试着创建一个新的项目,然后复制你的源代码。编译它,看看调试和发布可执行文件会得到什么。