#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 智慧型指標的作用是管理乙個指標,因為存在一下的情況 申請的空間再函式結束時忘記釋放,造成記憶體洩漏。使用智慧型指標可以很大程度上的避免這個問題,因為智慧型指標是乙個類,當超出了類的例項物件的作用域時...