new演算子とdelete演算子をオーバーロードしました。'old'へのポインタを保存し、それを'new'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)
が、それも悪いことです。