garbage collector(gc)
如果可以正確的遵從這種gc的使用規則,也就是說妳可以正確無誤的使用智能指針,那麽理論上來說,就不可能存在內存泄漏。
但是現實並不象想象的那麽單純,那麽美好。壹方面,智能指針的概念仍然沒有被C++社區廣泛的理解應用,而且智能指針種類繁多,各有各的規則,在代碼量多了的時候,有時存在這樣那樣的失誤難免;另壹方面(應該是更加令人為難的壹點),並不是所有人都那麽喜歡用智能指針,而且原生指針的使用很多情形下避無可避,我們不得不在原生指針與智能指針之間進行轉換。
所以這樣的gc的最終結果是,掌握引用計數的規則最終似乎比掌握new/delete的規則容易不了多少,有時甚至讓新接觸該技術的程序員感到畏懼。另外,引用計數的引入,出乎意料的產生了壹個負作用:調試內存泄漏變得比原先困難多了。
所以引用計數和智能指針實現的gc不能從根本上解決內存泄漏問題。