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函式的用...