我正尝试在这两篇文章的帮助下进行内存泄漏检测: http://msdn.microsoft.com/en-us/library/e5ewb1h3%28VS.80%29.aspx http://support.microsoft.com/kb/q140858/
所以在我的 stdafx.h 中我现在有:
#define _CRTDBG_MAP_ALLOC
#include <stdlib.h>
#include <crtdbg.h>
#define new new(_NORMAL_BLOCK,__FILE__,__LINE__)
唯一的问题是,我有一个覆盖新函数的类:
class Dummy
{
//overloaded new operator
void FAR* operator new(size_t cb);
}
现在,当我编译这段代码时,我得到: 错误 C2059:语法错误:“常量” error C2091: 函数返回函数
知道如何解决这个问题吗?
最佳答案
当取消重载定义时,您可以使用 pragma 指令来保存和恢复新宏。请参阅 [MSDN]( http://msdn.microsoft.com/en-us/library/hsttss76(VS.71).aspx) 了解确切的语法。
例如
#pragma push_macro("new")
#undef new
void FAR* operator new(size_t cb);
#pragma pop_macro("new")
您可以将这些放在标题中,例如
begin_new_override.h:
#ifdef new
#define NEW_WAS_DEFINED
#pragma push_macro("new")
#undef new
#endif
end_new_override.h:
#ifdef NEW_WAS_DEFINED
#undef NEW_WAS_DEFINED
#pragma pop_macro("new")
#endif
然后
#include "begin_new_override.h"
void FAR* operator new(size_t cb);
#include "end_new_override.h"
关于c++ - 内存泄漏检测和覆盖新功能?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1128458/