簡易實現shared ptr智慧型指標

2021-08-19 19:38:26 字數 461 閱讀 6780

shared_ptr智慧型指標與auto_ptr智慧型指標不同的是,拷貝構造或賦值後,原來的指標仍然能夠使用。

原因是這種指標用乙個引用計數來計算有多少個指標指向同乙個空間,拷貝構造和賦值,都會讓計數+1,智慧型指標析構的時候計數-1,計數為0才釋放記憶體。所以根據這幾點可以自己實現shared_ptr智慧型指標的功能。

#include using namespace std;

templateclass mshared_ptr

//拷貝構造

mshared_ptr(const mshared_ptr &r)

{cout<

引用計數要-1,如果為0要清除*/

cout<

智慧型指標 實現shared ptr

前面介紹的auto ptr和unique ptr都存在著些許的缺陷,顯得不是那麼的 智慧型 下面我們來看一下較為智慧型的shared ptr的設計思路 一塊空間 計數器 鎖 與前兩者不同的是shared ptr用乙個count的引用計數將指向同乙份記憶體空間的指標,用 count來表示,這樣在析構的...

智慧型指標(shared ptr的實現)

1.實現原理 shared ptr是利用乙個計數器,無論我們使用拷貝建構函式 賦值運算子過載 作為函式返回值 或作為引數傳給乙個引數時計數器 1,當shared ptr被賦予乙個新值或者需要銷毀時,計數器 直到計數器為0時,呼叫析構函式,釋放物件,並銷毀其記憶體。shaerd ptr不直接支援管理動...

智慧型指標 二 shared ptr實現原理

前面講到auto ptr有個很大的缺陷就是所有權的轉移,就是乙個物件的記憶體塊只能被乙個智慧型指標物件所擁有.但我們有些時候希望共用那個記憶體塊.於是c 11標準中有了shared ptr這樣的智慧型指標,顧名思義,有個shared表明共享嘛.所以shared ptr型別的智慧型指標可以做為stl容...