Item 34. Restricting Heap Allocation
1、什么情况下要限制堆分配?
假如一个句柄对象("handle" object )维护了一个体对象("body" object)的引用数量,就需要确保对象的析构函数调用。局部对象和静态对象能够自动调用其析构函数,而堆分配的对象需要显式地调用析构函数。这样确保这个特殊类的对象不能进行堆分配是个不错的注意。
2、如何限制堆分配?
class NoHeap {
public:
//...
protected:
void *operator new( size_t ) { return 0; }
void operator delete( void * ) {}
private:
void *operator new[]( size_t );
void operator delete[]( void * );
};
3、如何限制栈分配?
class OnHeap {
~OnHeap();
public:
void destroy()
{ delete this; }
//...
};