*自定義乙個myshared_ptr結構,包含引用計數、運算子、->運算子
// 自定義 shared_ptr 智慧型指標
template
<
class
t>
class
myshared_ptr
// 拷貝建構函式
myshared_ptr
(const myshared_ptr& sp)
:_ptr
(sp._ptr)
,_pcount
(sp._pcount)
// 賦值建構函式
myshared_ptr&
operator
=(myshared_ptr
& sp)
_ptr = sp._ptr;
_pcount = sp._pcount;
(*_pcount)++;
// 右值計數器 +1
}return
*this
;// 左右ptr值
}// 析構函式
~myshared_ptr()
}// *運算子
t&operator*(
)// -> 運算子
t*operator
->()
// 使用次數
intuse_count()
private
: t* _ptr;
// t* 型別指標
int* _pcount;
// 引用計數
};
再定義乙個類person,person在析構時,會有提示 :
struct person
~person()
intprint()
};
主函式,驗證:
int
main()
// 退出主程式main{} 範圍後,person會析構一次
執行結果:
帶引用計數的智慧型指標
stl中的auto ptr是不帶有引用計數的,因此乙個實體只能被乙個auto ptr物件擁有。由於這樣的限制,才會提出auto ptr在拷貝構造或賦值操作時轉移指標所有權的處理方法。向智慧型指標中新增引用計數可以完全避免 所有權轉移 帶來的錯覺,從而規範指標不安全行為,讓智慧型指標真正smart。內...
乙個簡單的C 記憶體管理與引用計數指標
最近專案需要一些模式相對固定的記憶體申請和銷毀,手癢寫了個c 記憶體管理器和引用計數的智慧型指標,加入了一些多執行緒保護機制 未測試 見文章後半部分。在main 裡做了乙個簡單速度測試。在我的i5 4590 8g win7機器上,使用定製記憶體管理的程式耗時0.35秒,使用new delete的耗時...
arc中的引用計數操作實現
你已經知道,arc會自動幫你插入retain和release語句。arc編譯器有兩部分,分別是前端編譯器和優化器。前端編譯器會為 擁有的 每乙個物件插入相應的release語句。如果物件的所有權修飾符是 strong,那麼它就是被擁有的。如果在某個方法內建立了乙個物件,前端編譯器會在方法末尾自動插入...