小编koo*_*obi的帖子

c ++异常安全

Exceptional C++提到了以下代码

template <class T> class Stack 
{
    public:
      Stack();
      ~Stack();

      /*...*/

    private:
       T*     v_;      // ptr to a memory area big
       size_t vsize_;  //  enough for 'vsize_' T's
       size_t vused_;  // # of T's actually in use
};



template<class T> 
Stack<T>::Stack()
        : v_(new T[10]),  // default allocation
          vsize_(10),
          vused_(0)       // nothing used yet
{ 
}
Run Code Online (Sandbox Code Playgroud)

它说如果其中一个T构造函数抛出,那么完全构造的任何T对象都被正确销毁,最后,自动调用operator delete来释放内存.这让我们防漏.

我的理解是,如果构造函数抛出异常,应用程序应该清理任何分配的资源.以上如何防漏?

c++ exception

6
推荐指数
1
解决办法
562
查看次数

标签 统计

c++ ×1

exception ×1