boost 之 智慧型指標

2021-06-19 17:46:47 字數 1573 閱讀 6659

smart_ptr簡介

boost中智慧型指標(smart_ptr)解決了每次

new 

出來的記憶體不需要人為delete

。智慧型指標包括:auto_ptr,scoped_ptr,scoped_array,shared_ptr,shared_array,weak_ptr。

auto_ptr

std::auto_ptr 屬於 stl,在 namespace std 中,包含標頭檔案 #include便可以使用。

std::auto_ptr 的特點:

使用舉例:

scoped_ptr

boost::scoped_ptr 屬於 boost 庫,定義在 namespace boost 中,包含標頭檔案 #include便可以使用。

boost::scoped_ptr 的特點: 

使用舉例:

scoped_array

boost::scoped_array 屬於 boost 庫,定義在 namespace boost 中,包含標頭檔案 #include便可以使用。

boost::scoped_array 的特點

使用舉例:

shared_ptr

boost::shared_ptr 屬於 boost 庫,定義在 namespace boost 中,包含標頭檔案 #include便可以使用。

boost::shared_ptr 的特點:

使用舉例

shared_array

boost::shared_array 屬於 boost 庫,定義在 namespace boost 中,包含標頭檔案 #include便可以使用。

boost::array_ptr 的特點:

使用舉例:

weak_ptr

boost::weak_ptr 屬於 boost 庫,定義在 namespace boost 中,包含標頭檔案 #include便可以使用。

boost::weak_ptr 的特點:

使用舉例

intrusive_ptr

boost::intrusive_ptr 屬於 boost 庫,定義在 namespace boost 中,包含標頭檔案 #include便可以使用。

boost::intrusive_ptr 的特點:

智慧型指標小結:

在可以使用 boost 庫的場合下,拒絕使用 std::auto_ptr,因為其不僅不符合 c++ 程式設計思想,而且極容易出錯。

在確定物件無需共享的情況下,使用 boost::scoped_ptr 或者 boost::scoped_array (動態陣列)。

在物件需要共享的情況下,使用 boost::shared_ptr 或者 boost::shared_array (動態陣列)。

在需要訪問 boost::shared_ptr 物件,而又不想改變其引用計數的情況下,使用 boost::weak_ptr。

最後一點,也是要求最苛刻一點:在你的**中,不要出現 delete 或 free(c語言) 關鍵字,因為可以用智慧型指標去管理。

c++ 智慧型指標詳解 (單獨使用命名空間標示符boost::等為了避免全部釋放命名空間而造成命名汙染)

boost 智慧型指標

boost shared ptr 的記憶體管理機制 boost shared ptr 的管理機制其實並不複雜,就是對所管理的物件進行了引用計數,當新增乙個 boost shared ptr 對該物件進行管理時,就將該物件的引用計數加一 減少乙個 boost shared ptr 對該物件進行管理時,...

boost 智慧型指標

最近使用boost的智慧型指標,檢視了一些帖子。總結如下 智慧型指標分類 智慧型指標使用注意事項 多執行緒安全性分析 這個帖子的結論很好,1 shared ptr是乙個非常實用的智慧型指標。2 shared ptr的實現機制是在拷貝構造時使用同乙份引用計數。3 對同乙個shared ptr的寫操作不...

boost 智慧型指標

shared 指標類似於乙個帶計數器的指標,當指標計數次數為0時,它將自動析構物件。shared ptr指標可通過一次new出來,一直向下傳遞,直到每次析構shared ptr時將該指標引用量 1 注 每次進行不帶引用的傳遞時呼叫次數會加1,但析構時同時會 1,若用引用傳遞,每次呼叫值不增加,但同樣...