stl的四種智慧型指標

2021-08-22 08:54:52 字數 585 閱讀 3505

第一種 std::auto_ptr

auto_ptr是所有權轉移的智慧型指標,也就是同一時刻只有乙個智慧型指標物件對原物件擁有所有權。

第二種 std:scoped_ptr

scoped_ptr智慧型指標無法使用乙個物件建立另乙個物件,也無法採用賦值的形式。這無疑提公升了智慧型指標的安全性,但是又存在無法「++」、「–」這些操作,當然也多了「*」、「->」這兩種操作。所以這種形式葉並不是最完美的。

第三種 std::shared_ptr

shared_ptr和以上二者的最大區別就是他維護了乙個引用計數,用於檢測當前物件所管理的指標是否還被其他智慧型指標使用(必須是shared_ptr管理的智慧型指標),在析構函式時對其引用計數減一,判斷是否為0,若為0,則釋放這個指標和這個引用計數的空間。但是不能迴圈引用。

第四種 std::weak_ptr

weak_ptr也維護了乙個引用計數,跟shared_ptr維護的引用計數或互不干擾,或相互協同。weak_ptr的指標會在weak_ptr維護的引用計數上加一,而shared_ptr會在shared_ptr維護的引用計數上加一,這樣在迴圈引用時,就會因為對不同引用的判斷的不同,使最終決定是否釋放空間的結果也不相同。

四種智慧型指標剖析

個人部落格傳送門 智慧型指標是c 中乙個程式設計技巧。它保證記憶體的正確釋放,解決了記憶體洩漏的問題。有乙個思想叫做raii,raii指的是資源分配即初始化。我們通常會定義乙個類來封裝資源的分配和釋放,在建構函式中完成資源的分配和初始化,在析構函式中完成資源的清理。在c 中,我們一般是使用new和d...

C 四種智慧型指標詳解

c 裡面的四個智慧型指標 shared ptr,unique ptr,weak ptr,auto ptr其中前三個是c 11支援,並且最後乙個已經被11棄用。智慧型指標的使用 智慧型指標主要用於管理在堆上分配的記憶體,它將普通的指標封裝為乙個棧物件。當棧物件的生存週期結束後,會在析構函式中釋放掉申請...

四種智慧型指標的用法以及實現原理

先來說一下四種常用的智慧型指標,我按使用度從低到高排一下順序,分別是auto ptr,unique ptr,shared ptr,weak ptr,先來列舉一下啊,剩下的我在乙個乙個慢慢說呀 首先來說一下智慧型指標的實現原理主要是通過物件生命週期來控制程式資源的簡單技術,然後了既然是指標就是可以進行...