Visual C ++ express 2008:Почему он помещает мегабайты с нулевыми байтами в конец исполняемого файла выпуска?

StackOverflow https://stackoverflow.com/questions/477885

Вопрос

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

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

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

Это было полезно?

Решение

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

Другие советы

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

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

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top