智慧型指標對比

2021-10-04 22:36:52 字數 751 閱讀 2061

智慧型指標對比:

(1)、boost::shared_ptr-- 基於引用計數器refcount(原子的)

<1>、建構函式中refcount+1,析構函式中refcount-1,當refcount的值減到為0時,該物件就會被銷毀。

<2>、解決迴圈引用的問題:與weak_ptr一起使用。weak_ptr只引用不計數。

<3>、能做stl容器中的元素

(2)、boost::scoped_ptr-- 離開作用域自動析構 -- 獨享控制權

<1>、獨享控制權 -- 禁止拷貝構造和賦值的

乙個scoped_ptr指標只能指向乙個物件。

<2>、不能做stl容器中的元素

scoped_ptr(scoped_ptr const &) = delete;

scoped_ptr &operator=(scoped_ptr const &) = delete;

因為stl容器中的push_back()需要使用scoped_ptr的operator=()函式.

(3)、std::unique_ptr-- 離開作用域自動析構 -- 獨享控制權

<1>、獨享控制權 -- 禁止拷貝構造和賦值的

乙個unique_ptr指標只能指向乙個物件。

<2>、不能做stl容器中的元素

unique_ptr(unique_ptr const &) = delete;

unique_ptr &operator=(unique_ptr const &) = delete;

stl智慧型指標和boost智慧型指標對比

先說說stl中的智慧型指標auto ptr,先說說auto ptr的特點。std auto ptr用來管理單個堆記憶體物件,但是獨享所有權,且不允許賦值和拷貝 沒有過載operator 所以如果在函式內部需要指標時,auto ptr是乙個不錯的選擇,但需要注意的是它不容許複製,這也就是容器 vect...

智慧型指標 強弱智慧型指標

在平時編寫 的時候經常會用到new來開闢空間,而我們開闢出來的空間必須得手動去delete他,但是如果程式設計師忘記去手動釋放那邊會出現乙個麻煩的問題,記憶體洩漏!或者是一塊記憶體被多個函式同時使用時,如果其中乙個函式不知道還有其他人也在使用這塊記憶體而釋放掉的話同樣也會引起程式的崩潰。引起記憶體洩...

智慧型指標學習

最近接觸到智慧型指標很多,於是研究了一下智慧型指標的原理,寫下自己的心得體會,有不對的還請指正。智慧型指標產生的目的 因為在c 中,存在非常複雜的指標錯誤問題,例如,某個物件生成後,指向該物件的指標可能有多個,當我們用delete語句刪除其中的乙個指標後,物件就被銷毀,那麼其餘指向該物件的指標就會懸...