如何在C ++中释放内存

时间:2010-10-30 07:12:39

标签: c++ pointers

我有一个A类,我在其中构建了一个名为bb的B类对象。 在构造对象bb之后,我在A类代码中运行异常,该异常由异常处理程序捕获。 现在我的问题是如何在异常处理程序中释放对象B的内存?

2 个答案:

答案 0 :(得分:1)

使用shared_ptr

struct B {...};

struct A {
  A() : bb(new B) {} // auto-deallocate
  boost::shared_ptr<B> bb;
}

答案 1 :(得分:0)

如果B类对象是A类(聚合模式)的成员对象,那么只要B本身是RAII-ed,您甚至不需要显式释放它。另一方面,如果它是一个堆对象(A在堆上动态分配bb),则需要显式释放它。您可以使用boost :: scoped_ptr或boost :: shared_ptr(取决于您是否希望与其他人共享bb的本机)来保存对象bb的本机,以便在删除A类对象时自动释放它。 / p>