Visual C ++ express 2008: почему он помещает мегабайты нулевых байтов в конец исполняемого файла выпуска? - PullRequest
3 голосов
/ 25 января 2009

Недавно я обнаружил, что мой исполняемый файл релиза (созданный с помощью msvc ++ express 2008) становится очень большим. Когда я проверял исполняемый файл с помощью шестнадцатеричной программы просмотра, я увидел, что только первые 300 Кбайт содержат полезные данные, остальные байты - только нули - 6 мегабайт нулевых байтов.

Файл с отладочной сборкой имеет размер 1 МБ, но выпуск составляет 6,5 МБ.

Почему MSVC ++ express делает эту бесполезную вещь? Как я могу это исправить?

Ответы [ 3 ]

10 голосов
/ 25 января 2009

Вы определили большие массивы в области видимости файла в вашей программе? Это может быть одной из причин. Вы можете использовать программу dumpbin, чтобы увидеть, сколько места занимает каждый раздел в exe-файле, что должно дать вам подсказку «почему».

2 голосов
/ 25 января 2009

Возможно, вы статически связываете свой .exe в выпуске, но динамически связываете в отладке? Проверьте это диалоговое окно Свойства проекта.

Другая возможность состоит в том, что в режиме выпуска много встроенных функций или вы используете много шаблонов.

Вы можете указать компилятору оптимизировать размер в диалоговом окне Свойства проекта.

0 голосов
/ 25 января 2009

Выпуск в 6 раз больше, чем Debug - возможно, что-то не так. Попробуйте создать свежий проект и просто скопируйте ваш исходный код. Скомпилируйте его и посмотрите, что вы получите за исполняемые файлы Debug и Release.

...