删除函数中的动态内存之前的异常处理

时间:2013-10-06 21:35:34

标签: c++

我分配了动态内存,我正在使用delete运算符清除函数末尾的内存。我在删除之前有一个异常处理。在这种情况下,如何避免内存泄漏。

2 个答案:

答案 0 :(得分:1)

使用std::unique_ptr或类似内容来保存堆分配的内存。然后,当智能指针超出范围时,无论是否抛出异常,它都会自动解除分配。

答案 1 :(得分:1)

处理此问题的最佳方法是创建一个包含已分配内存的类,并在构造函数中删除它。

这是std::vector的作用,因此当它超出范围时,编译器会确保删除内存(即使它因为析构函数而超出范围)。

对于指向单个值的指针,这就是智能指针的用途。 std::auto_ptr(现已弃用)和std::unique_ptr(C ++ 2011中的新增功能)为您完成此任务。