繁体   English   中英

如何在C ++中释放内存

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM