Visual C ++ express 2008:Почему он помещает мегабайты с нулевыми байтами в конец исполняемого файла выпуска?
-
20-08-2019 - |
Вопрос
Недавно я обнаружил, что исполняемый файл моего выпуска (созданный с помощью msvc ++ express 2008) становится очень большим.Когда я изучал исполняемый файл с помощью программы просмотра шестнадцатеричных данных, я увидел, что только первые 300 тысяч байт содержат полезные данные, остальные байты - это только нули - 6 мегабайт из нулевых байт.
Отладочный исполняемый файл имеет размер 1 МБ, но версия составляет 6,5 МБ.
Почему MSVC ++ express делает эту бесполезную вещь?Как я могу это исправить?
Решение
Определяли ли вы большие массивы в файловой области в своей программе?Это может быть одной из причин.Вы можете использовать программу dumpbin, чтобы увидеть, сколько места занимает каждый раздел в exe-файле, это должно дать вам ключ к пониманию "почему".
Другие советы
Возможно, вы статически связываете свой .exe в release, но динамически связываете в debug?Проверьте, что это диалоговое окно Свойств проекта.
Другая возможность заключается в том, что в режиме выпуска встроено множество функций или вы используете множество шаблонов.
Вы можете указать компилятору оптимизировать размер в диалоговом окне "Свойства проекта".
Выпуск в 6 раз больше, чем отладка - вероятно, что-то не так.Попробуйте создать новый проект и просто скопируйте свой исходный код.Скомпилируйте его и посмотрите, что вы получите для исполняемых файлов Debug и Release.