我注意到我们的一些项目完成了整个
#ifdef _DEBUG
#define new DEBUG_NEW
#endif
在他们的stdafx.h中的事情。
这个内存泄漏检测是否会在stdafx中指定时按预期工作?
答案 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;只有一两个文件,但这种情况很少见。