#define stdafx.h中的新DEBUG_NEW

时间:2016-04-21 13:37:02

标签: visual-c++ mfc

我注意到我们的一些项目完成了整个

#ifdef _DEBUG
#define new DEBUG_NEW
#endif
在他们的stdafx.h中的事情。

这个内存泄漏检测是否会在stdafx中指定时按预期工作?

1 个答案:

答案 0 :(得分:1)

不要把它放在stdafx.h中。这样做会给你带来不良副作用。

这就是原因。

在大多数cpp文件中,你有这样的东西:

#include "stdafx.h"

#include <AcmeHeader.h>
#include "MyHeader.h"

#ifdef _DEBUG
#define new DEBUG_NEW
#endif

请注意,明确应该在包含所有标头之后重新定义new。如果在stdafx.h中定义DEBUG_NEW,那么该定义也将应用于AcmeHeader.h和MyHeader.h,这会导致尝试重新定义operator new的头文件出现问题。

我也遇到了一些我想要删除重新定义&#34; new&#34;只有一两个文件,但这种情况很少见。