乙個簡單智慧型指標實現的思路如下:
智慧型指標,簡單來講是使用引用計數的方法,來跟蹤監控指標。當引用計數為0時就delete 所跟蹤的目標指標,釋放記憶體
智慧型指標將乙個指標封裝到乙個類中,當呼叫智慧型指標的拷貝建構函式時,將引用計數+1(因為新建立的智慧型指標也引用了目標指標)
過載智慧型指標的賦值操作符,等號左邊的物件引用計數-1,右邊的物件引用計數+1,右邊的目標指標和引用計數賦值給左邊的物件
智慧型指標的析構函式將引用計數-1,並判斷是否為0,如果是的話delete 目標指標
示例如下(為方便測試,加入了輸出列印,已遮蔽):
template class smart_ptr
smart_ptr(const smart_ptr& src)//拷貝構造時引用計數+1
t& operator*()//過載指標的解引用操作符
~smart_ptr()//析構中引用計數-1,判斷計數是否為0,為0才釋放記憶體
//if(count)cout<<"destructor:count is"<<*count<
智慧型指標原理及C 實現
智慧型指標是乙個類,在類的建構函式中傳入乙個普通指標,析構函式釋放指標。引入智慧型指標是為了更好的管理記憶體,防止記憶體洩漏等問題。實現方法 採用引用計數的方法。智慧型指標將乙個計數器與類指向的物件相關聯,引用計數跟蹤共有多少個類物件共享同一指標。其遵循以下規則 1 每次建立類的新物件時,初始化指標...
C 智慧型指標原理
智慧型指標 smart pointer 是儲存指向動態分配 堆 物件指標的類,用於生存期控制,能夠確保自動正確的銷毀動態分配的物件,防止記憶體洩露。它的一種通用實現技術是使用引用計數 reference count 智慧型指標類將乙個計數器與類指向的物件相關聯,引用計數跟蹤該類有多少個物件共享同一指...
C 智慧型指標原理
1.c 智慧型指標 2.c 智慧型指標簡單剖析 3.智慧型指標 auto ptr 詳解 4.c 智慧型指標詳解 5.請你介紹一下c 的智慧型指標 牛客網 在c 程式裡,使用new關鍵字開闢的記憶體必須被手動delete掉,不然就會導致記憶體的洩漏,但是,當程式非常冗長,你能保證自己每乙個手動開闢的記...