[英]how to deallocate memory in C++
我有一个A类,在其中构造了一个名为bb的B类对象。 构造对象bb之后,我遇到了A类代码中的异常,该异常被异常处理程序捕获。 现在我的问题是如何在异常处理程序中释放对象B的内存?
使用shared_ptr
struct B {...};
struct A {
A() : bb(new B) {} // auto-deallocate
boost::shared_ptr<B> bb;
}
如果B类对象是A类(聚合模式)的成员对象,那么只要B本身是RAII版本,您甚至不需要显式地分配它。 另一方面,如果它是一个堆对象(A在堆上动态分配bb),则需要显式释放它。 您可以使用boost :: scoped_ptr或boost :: shared_ptr(取决于您是否要与其他人共享bb的所有权)来持有对象bb的所有权,以便在删除A类对象时将其自动释放。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.