我在How_To_Find_Memory_Leaks中阅读了有关内存跟踪new和重载的内容delete
我定义了这些全局运算符:
inline void* __cdecl operator new( unsigned int size, const char *file, int line ) {
void* ptr = malloc( size );
AddTrack((DWORD)ptr, size, file, line);
return ptr;
}
inline void* __cdecl operator new( unsigned int size, void* ptr, const char *file, int line ) {
return ptr;
}
Run Code Online (Sandbox Code Playgroud)
它与 new 和 new[] 运算符配合良好,但我在放置 new 时遇到问题(第二个)。我的定义如下:
#define new new( __FILE__, __LINE__)
#define new(x) new( x, __FILE__, __LINE__)
Run Code Online (Sandbox Code Playgroud)
他们分开工作。但是当我尝试使用它们时,会出现错误。据我了解,它们是相互替代的。我知道我可以使用具有可变数量参数的宏,如下所示:
#define new( ... ) new( __VA_ARGS__, __FILE__, …Run Code Online (Sandbox Code Playgroud)