-1

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

4

2 回答 2

1

使用std::unique_ptr或类似的东西来保存你的堆分配内存。然后,当该智能指针超出范围时,无论是否引发异常,它都会自动释放。

于 2013-10-06T21:36:59.427 回答
1

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

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

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

于 2013-10-06T21:38:43.937 回答