C++11/14介紹(五)——智能指針和引用計數(一)

引用計數這種計數是爲了防止內存泄露而產生的。基本想法是對於動態分配的對象,進行引用計數,每當增加一次對同一個對象的引用,那麼引用對象的引用計數就會增加一次,每刪除一次引用,引用計數就會減一,當一個對象的引用計數減爲零時,就自動刪除指向的堆內存。

在傳統 C++ 中,『記得』手動釋放資源,總不是最佳實踐。因爲我們很有可能就忘記了去釋放資源而導致泄露。所以通常的做法是對於一個對象而言,在構造函數的時候申請空間,而在析構函數(在離開作用域時調用)的時候釋放空間,也就是我們常說的 RAII 資源獲取即初始化技術。

凡事都有例外,我們總會有需要將對象在自由存儲上分配的需求,在傳統 C++ 裏我們只好使用 new 和 delete 去『記得』對資源進行釋放。而 C++11 引入了智能指針的概念,使用了引用計數的想法,讓程序員不再需要關心手動釋放內存。這些智能指針就包括 std::shared_ptr/std::unique_ptr/std::weak_ptr,使用它們需要包含頭文件 。

注意:引用計數不是垃圾回收,引用技術能夠儘快收回不再被使用的對象,同時在回收的過程中也不會造成長時間的等待,更能夠清晰明確的表明資源的生命週期。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章