我分配了动态内存,我正在使用delete运算符清除函数末尾的内存。我在删除之前有一个异常处理。在这种情况下,如何避免内存泄漏。
答案 0 :(得分:1)
使用std::unique_ptr
或类似内容来保存堆分配的内存。然后,当智能指针超出范围时,无论是否抛出异常,它都会自动解除分配。
答案 1 :(得分:1)
处理此问题的最佳方法是创建一个包含已分配内存的类,并在构造函数中删除它。
这是std::vector
的作用,因此当它超出范围时,编译器会确保删除内存(即使它因为析构函数而超出范围)。
对于指向单个值的指针,这就是智能指针的用途。 std::auto_ptr
(现已弃用)和std::unique_ptr
(C ++ 2011中的新增功能)为您完成此任务。