我重载了 new 和 delete 运算符。我想保存指向“旧”的指针new
并将delete
其称为“新”new
和delete
. 例如:
#include "h.h"
void * operator new ( size_t size, /*args*/ ) throw (std::bad_alloc)
{
void * p = 0;
p = original_new(size); //calling for 'old' new
//some code
return p;
}
和类似的算子delete
。
所以,我试图在我的头文件中输入以下内容:
static void * (*original_new)(size_t) = ::operator new;
static void * (*original_new_arr)(size_t) = ::operator new[];
static void (*original_delete)(void *) = ::operator delete;
static void (*original_delete_arr)(void *) = ::operator delete[];
它已成功编译,但我在启动时有核心转储。有可能打电话给malloc
坏new
的,这真是个坏主意。可以打电话new(std::nothrow)
,但也很糟糕。