C 學習筆記 第37課 智慧型指標分析

2021-10-24 08:53:11 字數 1153 閱讀 1696

#include

using namespace std;

class test

intgetvalue()

};intmain()

return0;

}執行結果:01234

**解讀:沒有對p進行記憶體釋放,會導致記憶體洩漏

解決方法

智慧型指標分析

通過類物件模擬智慧型指標,只能用來指向堆空間中的物件或者變數,智慧型指標的本質是物件

#include

#include

using namespace std;

class test

intvalue()

~test()

};class smartpointer

test operator*()

test* operator->()

bool isnull()

smartpointer& operator=

(const smartpointer& obj)

return

*this;

}smartpointer

(const smartpointer& obj)

~smartpointer()

};intmain()

結果:

test

(int i)

smartpointer()

p->

value()

=1this.mp =

007e5938

obj.mp =

00000000

p1.isnull()

=0p1.value=1~

smartpointer

() mp=

007e5938

~test()

~smartpointer

() mp=

00000000

智慧型指標只能用來指向堆空間中的物件或者變數小結

37 智慧型指標的分析

1 永恆的話題 這個程式的問題在於在 的27行,每for迴圈一次,就new乙個物件,但是只用乙個指標去指向這個物件,沒釋放記憶體,但是指標馬上又指向了另一段記憶體,這就造成了記憶體洩漏。2 深度的思考 3 智慧型指標分析 使用物件代替指標 從結果我們可以發現,指標指向的記憶體被釋放了,不會造成記憶體...

C 學習筆記15 智慧型指標分析

智慧型指標的實現 include using namespace std template typename t class smartpointer 實現一片堆空間只能由乙個智慧型指標標識 smartpointer const smartpointer obj 也需要實現一片堆空間只能由乙個智慧型...

C 智慧型指標學習筆記

原文 摘錄智慧型指標 auto ptr,unique ptr,shared ptr,weak ptr 智慧型指標的作用是管理乙個指標,因為存在一下的情況 申請的空間再函式結束時忘記釋放,造成記憶體洩漏。使用智慧型指標可以很大程度上的避免這個問題,因為智慧型指標是乙個類,當超出了類的例項物件的作用域時...