本文已经迁移到: http://cpp.winxgui.com/cn:garbage-collection-in-cplusplus
使用智能指针(smart pointers)
- http://www.codeproject.com/cpp/garbage_collect.asp
- 原理:基于引用计数(reference count)。
这种垃圾回收(gc)算法无非都是给每一块分配的内存提供引用计数,然后通过智能指针(smart pointer)自动完成引用计数的加减,如果引用技术减少到零,就代表没有人使用该内存了,这块内存就可以回收了。
如果可以正确的遵从这种gc的使用规则,也就是说你可以正确无误的使用智能指针,那么理论上来说,就不可能存在内存泄漏。
但是现实并不象想象的那么单纯,那么美好。一方面,智能指针的概念仍然没有被C++社区广泛的理解应用,而且智能指针种类繁多,各有各的规则,在代码量多了的时候,有时存在这样那样的失误难免;另一方面(应该是更加令人为难的一点),并不是所有人都那么喜欢用智能指针,而且原生指针的使用很多情形下避无可避