如果构造函数中发生异常,如何释放动态内存?

时间:2019-05-26 10:10:25

标签: c++

我遇到了一种情况,构造函数分配了动态内存,如果构造函数中发生任何异常,它就不会释放动态分配的内存。为了避免这种情况,我使用了unique_ptr,它能够正确释放内存。

在这里展示情况是一个伪代码。

NULL

对于这种情况,这是正确有效的方法吗?对于这种情况,是否还有更好的选择?

编辑1:删除了错误遗留的析构函数中的注释代码

1 个答案:

答案 0 :(得分:1)

不,这恰恰是智能指针和一般RAII的重点和预期用例。

还要注意,在任何情况下,析构函数中的delete a都是错误的,因为unique_ptr本身并不是指针。相关地,如果构造函数中有异常,则也不会调用析构函数。