1

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

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

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

4

2 回答 2

1

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

于 2011-03-18T10:30:33.557 回答
0

您可以找出定义 _DEBUG 时使用的 malloc 调用的名称,然后手动定义 malloc 来使用它吗?

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

于 2011-03-18T10:30:19.263 回答