C 中各種智慧型指標的實現及弊端(三)

2021-10-01 20:53:28 字數 847 閱讀 8589

c++11中開始提供更靠譜的unique_ptr

std::unique_ptr文件

int

main()

unique_ptr的實現原理:簡單粗暴的防拷貝,下面簡化模擬實現了乙份uniqueptr來了解它的原理

// 模擬實現乙份簡答的uniqueptr,了解原理

template

<

class

t>

class

uniqueptr

~uniqueptr()

t&operator*(

) t*

operator

->()

private

://這裡把成員函式設為私有的目的是防止使用者自己在類外進行實現

// c++98防拷貝的方式:只宣告不實現+宣告成私有

uniqueptr

(uniqueptr

const&)

; uniqueptr &

operator

=(uniqueptr

const&)

;// c++11防拷貝的方式:delete

uniqueptr

(uniqueptr

const&)

=delete

; uniqueptr &

operator

=(uniqueptr

const&)

=delete

;private

: t * _ptr;

};

C 實現智慧型指標 三

一.實現版本v3 每乙個物件負責維護物件所有引用的計數值。當乙個新的引用指向物件時,引用計數器就遞增,當去掉乙個引用時,引用計數就遞減。當引用計數到零時,該物件就將釋放占有的資源。引用計數需要儲存在被引用的資源物件裡,乙個資源物件對應乙個引用計數,當其引用計數為0時,資源物件可以被銷毀。需要修改以下...

智慧型指標原理及C 實現

智慧型指標是乙個類,在類的建構函式中傳入乙個普通指標,析構函式釋放指標。引入智慧型指標是為了更好的管理記憶體,防止記憶體洩漏等問題。實現方法 採用引用計數的方法。智慧型指標將乙個計數器與類指向的物件相關聯,引用計數跟蹤共有多少個類物件共享同一指標。其遵循以下規則 1 每次建立類的新物件時,初始化指標...

c 智慧型指標 C 智慧型指標是如何實現的

c 程式執行時,計算機記憶體從大類上分為棧和堆,在棧上的記憶體是由系統自動分配和 的,而堆上的記憶體卻是由程式設計師手動申請和釋放的,如果程式設計師在記憶體的管理上出現失誤,輕則程式執行結果與預期有差距,重則程式直接崩潰 棧和堆記憶體 區別 棧記憶體上的變數在過了作用域 大括號 後系統會自動 而堆記...