Распространенные проблемы, возникающие при создании построений выпуска

Как правило, во время разработки процессы сборки и тестирования выполняются с помощью отладочной сборки проекта. Если затем требуется собрать приложение для сборки выпуска, может возникнуть нарушение доступа.

Далее показаны основные различия между отладочной сборкой и сборкой выпуска. Существуют и другие различия, но ниже приведены основные различия, которые могут привести к сбою приложения в сборке выпуска, когда оно работает в отладочной сборке.

Сведения о перехвате ошибок сборки выпуска в отладочных сборках см. в статье о параметре компилятора /GZ (перехват ошибок сборки в отладочной сборке).

Макет кучи

Макет кучи будет причиной примерно 90 % очевидных проблем при работе приложения в режиме отладки, но не в режиме выпуска.

При сборке проекта для отладки используется механизм распределения отладочной памяти. Это значит, что все блоки выделенной памяти заключаются в последовательности защитных байтов. Эти байты обнаруживают перезапись памяти. Поскольку в версиях выпуска и отладки используются разные макеты кучи, перезапись памяти может не приводить к проблемам в отладочной сборке, но может иметь катастрофические последствия в сборке выпуска.

Дополнительные сведения см. в статьях Проверка перезаписи памяти и Использование отладочной сборки для проверки перезаписи памяти.

табличных переменных

При создании сборки выпуска происходит изменение многих макросов MFC и большей части реализации MFC. В частности, макрос ASSERT ничего не возвращает в сборке выпуска, поэтому никакие фрагменты кода в ASSERT выполняться не будут. Дополнительные сведения см. в статье о проверке операторов ASSERT.

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

Поддержка указателей

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

Оптимизации

В зависимости от характера определенных сегментов кода оптимизирующий компилятор может генерировать непредвиденный код. Это наименее вероятная причина проблем сборки выпуска, однако она иногда тоже может возникать. Сведения о решении см. в статье Оптимизация кода.

См. также

Сборки выпуска
Устранение проблем сборки выпуска