Item 34. Restricting Heap Allocation
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; }
    //...
};
 
                     
                    
                 
                    
                 
                
            
         
 
         浙公网安备 33010602011771号
浙公网安备 33010602011771号