小编use*_*351的帖子

全局新运算符重载

我在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)

c++ operator-overloading new-operator

2
推荐指数
1
解决办法
3557
查看次数

标签 统计

c++ ×1

new-operator ×1

operator-overloading ×1