У меня есть программное обеспечение, которое скомпилировано в режиме отладки для простоты поддержки (получение файлов дампа и т. д.). Версия Visual Studio 2008.
Мы заметили, что в результате выделение памяти приводит к огромным накладным расходам. Каждое выделение памяти (даже одного указателя), выполняемое при определении DEBUG, берет с собой большой заголовок, идентифицирующий выделяемый файл, строку и т. д.
Мы пытаемся оставаться в режиме DEBUG и при этом уменьшить накладные расходы. Кажется, что определение _AFX_NO_DEBUG_CRT должно помочь, но его определение на уровне проекта или в нашем файле stdafx.h приводит к длинному списку ошибок компиляции:
c:\program files (x86)\microsoft visual studio 9.0\vc\atlmfc\include\afxtls_.h(66): ошибка C2059: синтаксическая ошибка: '__asm' c:\program files (x86)\microsoft visual studio 9.0\ vc\atlmfc\include\afxtls_.h(66): ошибка C2143: синтаксическая ошибка: отсутствует ')' перед '{' ....
О той же ошибке сообщается в разделе: # define _AFX_NO_DEBUG_CRT вызывает поток ошибок компиляции, но требование создавать собственный новый здесь не актуально, и я не нашел там решения.
Другая альтернатива, которую я видел в сообщениях, - это игра с _CrtSetDbgFlag - но это, похоже, просто для того, чтобы избежать записи информации в кучу - но все же выделяет для нее память - это не то, что мы ищем.
Есть идеи?