boost 智慧型指標

2021-06-25 11:26:30 字數 776 閱讀 3185

最近使用boost的智慧型指標,檢視了一些帖子。總結如下:

智慧型指標分類:

智慧型指標使用注意事項:

多執行緒安全性分析:

(這個帖子的結論很好,

1 shared_ptr是乙個非常實用的智慧型指標。

2 shared_ptr的實現機制是在拷貝構造時使用同乙份引用計數。

3 對同乙個shared_ptr的寫操作不是執行緒安全的。 對使用同乙份引用計數的不同shared_ptr是執行緒安全的。

)封裝有基類、子類的智慧型指標型別轉換:

經過幾天的試用,最終決定放棄在系統中使用boost::shared_ptr.原因如下:

1.因為boost::shared_ptr是以boost::shared_ptr(t* p)建立智慧型指標,呼叫兩次就會生成對於t* p的兩個引用計數,比較危險。

2.總有情況需要將類內使用boost::shared_ptr儲存的物件取出,如果返回指標,出現情況1.如果返回boost::shared_ptr引用,又存在a是t的子類,boost::shared_ptr和boost::shared_ptr互轉的情況,很麻煩,而且處理不好很容易出錯,對於使用系統的使用者使用是個很不好的選擇。

3.總有情況是物件要返回自身的智慧型指標(以this引數)。這時會返回boost::shared_ptr(this),結果依據第乙個原因,這種情況一定會生成兩個計數,也就一定會出錯。

所以boost::shared_ptr這種非插入式(輔助式)只適合小範圍、區域性使用。插入式(控制代碼)指標才適合系統使用(上些大型的c++開源庫,如vtk/osg均使用此方法)。

boost 智慧型指標

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

boost 智慧型指標

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

Boost智慧型指標 shared ptr

boost scoped ptr雖然簡單易用,但它不能共享所有權的特性卻大大限制了其使用範圍,而boost shared ptr可以解決這一侷限。顧名思義,boost shared ptr是可以共享所有權的智慧型指標,首先讓我們通過乙個例子看看它的基本用法 該程式的輸出結果如下 the sample...