最近我發現我的發佈可執行文件(用msvC++ express 2008製作)變得非常大。當我用十六進制查看器檢查可執行文件時,我看到只有前300k字節包含有用數據,其餘字節僅爲零 - 6字節爲零字節。Visual C++ express 2008:爲什麼它會在發佈可執行文件的末尾放置空字節數?
調試構建的EXE有1MB大小,但發佈是6.5MB。
爲什麼MSVC++會做這種無用的事情?我該如何解決它?
最近我發現我的發佈可執行文件(用msvC++ express 2008製作)變得非常大。當我用十六進制查看器檢查可執行文件時,我看到只有前300k字節包含有用數據,其餘字節僅爲零 - 6字節爲零字節。Visual C++ express 2008:爲什麼它會在發佈可執行文件的末尾放置空字節數?
調試構建的EXE有1MB大小,但發佈是6.5MB。
爲什麼MSVC++會做這種無用的事情?我該如何解決它?
您是否在程序的文件範圍中定義了大型數組?這可能是一個原因。您可以使用dumpbin程序來查看exe文件中每個部分佔用多少空間,這應該會給您提供「爲什麼」的線索。
版本比調試大6倍 - 可能是錯誤的。 嘗試創建一個新項目並複製源代碼。編譯它並查看您獲得的Debug和Release可執行文件。
也許你是靜態鏈接你的.exe在發佈,但在調試動態鏈接?檢查這是對話框項目屬性。
另一種可能性是,在發佈模式中很多函數是內聯的,或者您正在使用大量模板。
您可以告訴編譯器在對話框項目屬性中優化大小。
是的!大型數組。我從來沒有想過,巨大的陣列會做這種奇怪的事情。我刪除了所有這些,並在飛行中分配它們。我的exe變得很小。但爲什麼不出現這個問題呢?也許當我重新組織代碼將所有內容放在類中... – Calmarius 2009-01-25 17:47:29
在調試版本中,可能會有調試代碼將數組初始化爲0xCD。 – MSalters 2009-01-26 08:31:16