未定义_DEBUG时检查堆完整性?

时间:2011-03-18 10:16:35

标签: c++ visual-studio memory-management malloc msvcrt

我希望创建一个构建的项目构建,使其与发布版本相同,除了使用默认分配器的调试版本(对alloc / free进行canary检查等)。编译器/ CRT是Visual Studio 2010。

阅读CRT的文档似乎需要为_CrtCheckMemory(),_ malloc_dbg()等的调用定义_DEBUG,以免被删除。我不希望启用_DEBUG定义,因为这会比分配器影响更多。

有没有办法在没有定义_DEBUG的情况下使用CRT调试分配器?

2 个答案:

答案 0 :(得分:1)

_malloc_dbg()需要调试运行时,调试运行时需要_DEBUG - 所以不,你不能这样做。

答案 1 :(得分:0)

您可以找到定义_DEBUG时使用的malloc调用的名称,并手动定义malloc来代替使用它吗?

如果使用c ++,则与new相同,您可以创建调试版本的全局覆盖