【发布时间】:2014-07-31 18:36:55
【问题描述】:
假设你有一些这样的代码:
void myFunction()
{
myClass * mine = new myClass();
// body of function
delete mine;
}
如果在函数体中抛出异常,delete 将永远不会被调用,并且会导致内存泄漏。除了使用<memory> 中的任何托管指针之外,缓解这种情况的最佳方法是什么。
【问题讨论】:
-
编写自己的托管指针类? (注意:不要。使用现有的实现。)
-
创建自己的类来管理指针。
-
您对使用久经考验的托管指针有何不满?
-
std::auto_ptr或std::unique_ptr(C++11) 是要走的路。 -
这就是为什么你应该在析构函数中释放内存
标签: c++ pointers memory-management memory-leaks exception-handling