Поделиться через


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

Обновлен: Ноябрь 2007

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

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

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

  • Компиляция

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

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

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

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

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

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

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

Компиляция

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

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

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

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

Оптимизация

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

См. также

Ссылки

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

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