首页 > 代码库 > C++ 重载new和delete

C++ 重载new和delete

下边代码对new和delete进行了简单的重载:

#include <memory>#include <iostream>#include <cstddef>using namespace std;class TraceHeap{    int i;public:    static void* operator new(size_t siz)    {        void* p = ::operator new(siz);        cout << "Allocating TraceHeap object on the heap "            << "at adress " << p << endl;        return p;    }    static void operator delete(void* p)    {        cout << "Deleting TraceHeap object at address "            << p <<endl;        ::operator delete(p);    }    TraceHeap(int i) : i(i) {}    int getVal()  const { return i; }};int main(){    auto_ptr<TraceHeap> pMyObject(new TraceHeap(5));    cout << pMyObject->getVal() << endl;    // Pringts 5    getchar();}

 

运行结果:

技术分享

C++ 重载new和delete