boost庫中智慧型指標的發展

2021-07-05 01:48:24 字數 470 閱讀 7867

boost庫下各種智慧型指標的發展:

智慧型指標的發展是為了解決記憶體洩漏的情況而誕生,在大型工程中,即時足夠小心的保證new和delete 匹配出現。   

但無法避免throw的異常丟擲導致一段程式的提前結束而產生的記憶體洩漏。

誕生智慧型指標,用類封裝原生指標。

auto_ptr    引入乙個所有權的概念。指向的改變標誌所有權的變更。 但是無法解決如下問題:

在乙個塊內對所有權做出改變,結束後再去修改內容時所有權已經不屬於自己。因此在新的c++標準中將auto_ptr去除。

scoped_ptr : auto_ptr 的改進,如其名字一樣。該智慧型指標

僅在乙個作用域中有效

。由於以上的缺陷,引入shared_ptr 共享型智慧型指標,加入乙個count的引用計數,需要賦值或者更改的操作,只需要變更引用計數。但是

無法解決迴圈計

數的問題。

最終,引入weak_ptr

boost庫智慧型指標

程式的記憶體資源管理一直是個比較麻煩的問題,c 程式在引入智慧型指標之前,new出來的記憶體,需要自己手動的銷毀,自己去管理申請堆記憶體的生命週期。有的時候難免會遺漏對資源的釋放銷毀。智慧型指標則能很好的解決記憶體管理的問題,不但能很好的管理裸指標,還能管理記憶體資源 raii 機制。前借助boos...

boost中的智慧型指標

進行本地執行緒管理的 thread specific ptr 指標 可以看這裡 我也沒有怎麼好好看明白呢,就了解了一下,因為用不到啊。如果要通過智慧型指標獲得原始資源指標,則呼叫智慧型指標的 get 即可,而如果要訪問原始資源,智慧型指標過載了 和 操作符,使用起來和原始指標一樣。fread函式的用...

boost中的智慧型指標

進行本地執行緒管理的 thread specific ptr 指標 可以看這裡 我也沒有怎麼好好看明白呢,就了解了一下,因為用不到啊。如果要通過智慧型指標獲得原始資源指標,則呼叫智慧型指標的 get 即可,而如果要訪問原始資源,智慧型指標過載了 和 操作符,使用起來和原始指標一樣。fread函式的用...