Почему C ++ fwrite () производит больший вывод в релизе? - PullRequest
0 голосов
/ 20 апреля 2010

Недавно я написал реализацию алгоритма сжатия Canonical Huffman. У меня есть тестовый файл объемом 500 КБ, который можно сжать до примерно 250 КБ при запуске сборок отладки и выпуска из Visual Studio 2008. Однако при запуске сборки выпуска непосредственно из исполняемого файла тестовый файл сжимается только до 330 КБ.

Я предполагаю, что что-то идет не так, когда файл пишется с использованием fwrite (). Я протестировал программу и подтвердил, что распаковка файлов всегда приводит к правильному распакованному файлу.

Кто-нибудь знает, почему это может быть? Как один и тот же исполняемый файл может создавать выходные данные разного размера в зависимости от того, откуда он запущен?

Ответы [ 3 ]

3 голосов
/ 20 апреля 2010

Звучит как где-то неинициализированное значение. Смотрите также: Сбой программы при запуске вне IDE

Запуск в IDE инициализирует значения глобальными значениями по умолчанию, а запуск вне IDE - нет, поэтому любые неинициализированные переменные будут иметь разные значения.

2 голосов
/ 20 апреля 2010

Проверьте параметр компилятора / RTCu , чтобы помочь обнаружить использование неинициализированных переменных.

0 голосов
/ 20 апреля 2010

Попробуйте запустить его через App Verifier и посмотрите, что он найдет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...