c 實現簡單的智慧型指標

2022-09-13 21:54:27 字數 892 閱讀 2839

rt,**參考了 stl(msvc) 中shard_ptr的實現,基本原理是引用計數,利用ref_cnt類來管理記憶體,在shared_ptr建立時建立,此後shared_ptr僅是在拷貝複製析構的過程中對引用進行修改,個人覺得比較有意思的乙個地方在於通過對ref_cnt類多型的應用使得shared_ptr無需額外增加模板引數這個想法(我原來想利用預設模板引數的方法感覺既不靈活又麻煩)。

*****4月27號*********************************************

看了effective c++ ,知道有了迴圈引用這種坑爹玩意,終於明白weak_ptr存在的意義,

為了彌補這個致命的漏洞,模仿msvc++的stl實現將tshared_ptr的部分**改成了個基類ptr_base,這樣weak_ptr就可以重用

部分**,減小了**重複,此外,因為看不懂stl中weak count 的作用,我就用了簡單的想法去實現它(tweak_ptr),可能會留下

什麼隱患,但是無論如何它通過了我的測試

*****4月30號*********************************************

翻了下c++primer,看了weak_ptr那部分,發現介面中要求實現 lock() 與 expired() 兩部分,

若weak_ptr所指物件存在,則返回true,否則返回false

lock 返回weak_ptr關聯的shared_ptr,若shared_ptr不存在,則返回乙個空的shared_ptr

weak count 的作用就是用來管理ref_cnt_base物件,這保證了lock與expired的正確性

根本原理還是引用技術,順便一提,新增了weak count 還是能通過 cyclic reference 測試(廢話

這是測試**

用c 簡單實現智慧型指標

用c 簡單實現智慧型指標 什麼是智慧型指標?答案相當簡單 智慧型指標是聰明的普通指標。這是什麼意思?實際上,智慧型指標是一些物件,表現出普通指標的功能但是比普通指標多做了一些事情。這些物件像普通指標一樣靈活,並且管理物件有自己的優點 比如構造器和自動析構 智慧型指標解決了普通指標的一些問題。普通指標...

智慧型指標的簡單實現

智慧型指標 它的一種通用實現方法是採用引用計數的方法。智慧型指標將乙個計數器與類指向的物件相關聯,引用計數跟蹤共有多少個類物件共享同一指標。有兩種實現方法,本例簡單的實現了智慧型指標。include include using namespace std template class smartpt...

智慧型指標的簡單實現

智慧型指標 動態的管理開闢的記憶體,防止人為的記憶體洩漏。sharedptr的實現 原理 使用引用計數的原理使多個物件可以指向一塊空間。define crt secure no warnings includeusing namespace std template class sharedptr ...