Проверка целостности кучи, когда _DEBUG не определен? - PullRequest
1 голос
/ 18 марта 2011

Я хочу создать сборку проекта, сконструированную так, чтобы она была идентична сборке выпуска, за исключением того, что используется отладочная версия распределителя по умолчанию (с канарными проверками на alloc / free и т. Д.). Компилятор / CRT - это Visual Studio 2010.

При чтении документации для CRT, кажется, что _DEBUG необходимо определить для вызовов _CrtCheckMemory (), _malloc_dbg () и т. Д., Которые нельзя удалить. Я не хочу включать определение _DEBUG, так как это повлияет больше, чем на распределитель.

Есть ли способ использовать распределитель отладки CRT без определения _DEBUG?

Ответы [ 2 ]

1 голос
/ 18 марта 2011

_malloc_dbg() требует времени выполнения отладки, время выполнения отладки требует _DEBUG - так что нет, вы не можете сделать это.

0 голосов
/ 18 марта 2011

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

То же самое с новым, если вы используете c ++, вы можете создать глобальное переопределение для отладочной версии

...