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

В процессе разработки обычно выполняется построение и тестирование отладочного построения проекта.При последующем построении сборки выпуска могут возникать ошибки нарушения прав доступа.

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

  • Размещение в куче

  • Компиляция

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

  • Оптимизация

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

Размещение в куче

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

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

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

Компиляция

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

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

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

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

Оптимизация

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

См. также

Ссылки

Построения выпуска

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