【发布时间】:2011-01-12 05:41:21
【问题描述】:
我最近在面试 C++ 职位,有人问我如何防止造成内存泄漏。我知道我没有对这个问题给出满意的答案,所以我把它扔给你们。防止内存泄漏的最佳方法是什么?
谢谢!
【问题讨论】:
-
使用垃圾收集器 (google.com/search?q=Garbage+collection+c%2B%2B)...?
-
@KennyTM 不,当您拥有 RAII 时,不要使用垃圾收集器。如果您确实需要共享所有权,只需使用 C++0x 中的 shared_ptr 或目前的 boost。
-
@Kenny:如果你想忍受与 GC 相关的问题。 C++ 有一个更细粒度的控制机制,称为智能指针。
-
感谢大家的详尽解答。决定接受哪个答案很困难。由于 Poita_ 的回答有很多赞成票,我会让那个人自己说话。我已将 jalf 的回答标记为答案,因为它对他的观点有学术考虑。再次感谢!
-
@KennyTM:C++ 中的 GC 并不能解决问题。 C++ 中的 GC 必须对正在使用的内存做出非常保守的最坏情况估计,这意味着它可能会错过一些分配。所以在 C++ 中,GC 不会消除内存泄漏,它只是处理其中的一些。
标签: c++ memory-management pointers memory-leaks