shared ptr與make shared的用法

2021-08-01 01:14:49 字數 621 閱讀 1435

程式使用動態記憶體出於以下三種原因之一

1、程式不知道自己需要多少物件;

2、程式不知道所需物件的準確型別;

3、程式需要在多個物件間共享資料

shared_ptr的用法

可以指向特定型別的物件,用於自動釋放所指的物件

eg: shared_ptrpointclouddlgpointer;//指向型別為cdlgpointcloud的物件pointclouddlgpointer;

當然還有乙個最安全的分配和使用動態記憶體的方法就是呼叫乙個名為make_shared的標準庫函式;

make_shared的用法

make_shared 在動態記憶體中分配乙個物件並初始化它,返回指向此物件的shared_ptr,與智慧型指標一樣,make_shared也定義在標頭檔案memory中;

當要用make_shared時,必須指定想要建立的物件型別,定義方式與模板類相同,在函式名之後跟乙個尖括號,在其中給出型別;

如make_sharedp3 = make_shared(42);

一般採用auto定義乙個物件來儲存make_shared的結果,如auto p1 =make_shared(42);

關於shared ptr與weak ptr的使用

shared ptr是帶引用計數的智慧型指標,可以說大部分的情形選擇用shared ptr不會出問題。那麼weak ptr是什麼,應該怎麼用呢?weak ptr也是智慧型指標,但是比較弱,感覺沒什麼用。其實它的出現是伴隨shared ptr而來,尤其是解決了乙個引用計數導致的問題 在存在迴圈引用的時...

簡單實現shared ptr

這是乙個簡單的實現shared ptr的過程 因為是小練習的緣故 其中有些地方邏輯可能並不嚴密 希望大家指正 注意點刪除器因為shared ptr的刪除器是執行時繫結的 所以其型別應該是乙個指標 所以我們需要乙個函式指標 指向刪除器 類的型別這是乙個典型的類指標的類 有共用乙個指標 其實使用智慧型指...

shared ptr的注意點

對於c 新手而言,面對複雜的專案中指標的四處傳遞,或者異常後的處理,很容易引起申請了記憶體沒有釋放的問題,c 11給出了智慧型指標來簡化這一問題,常用的是shared ptr。shared ptr構造出的物件來管理一塊記憶體,結構如下 其中ptr指向了一塊記憶體空間,ret count儲存了有多少s...