异常处理2 指针
#include <iostream>
#include <cstddef>
using namespace std;
class TraceHeap
{
int i;
public:
static void* operator new(size_t size)
{
void* p = ::operator new(size);
cout<<"Allocating TraceHeap object at address at address"<<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 getValue() const { return i; }
};
int main()
{
auto_ptr<TraceHeap> pMyObject(new TraceHeap(5));
cout<<pMyObject->getValue()<<endl;
return 0;
}
智能指针可以自动析构 从而在一定层面上防止了内存泄露。