1 #include
2 #include
3 4 using namespace std;
5 using std::tr1::shared_ptr;
6 7 int main()
8 //在這個作用域中pp_copy會自動銷毀,但是分配給pp的double不會別銷毀。
15 cout<<"pp="<<*pp<16 }//此時pp會自動銷毀,動態分配的double會被銷毀,因為已經沒有指標指向它。
17 return 0;
18 }
複製**
其實只是看上面的**,覺得好像沒有實際的作用。
複製**
1 int main()
2 9 cout<<"pp="<<*pp<10 return 0;
11 }
複製**
到這裡你可能會說那個delete不用不就行了?其實是的。只要小心使用delete就行。可是有沒有想過,但**量很大的時候,就不知道是不是要delete了,這就會造成記憶體洩漏了。
1 double * pp = new double(22.22);
2 double * pp_copy = new double(22.22);
3 //delete pp_copy;
4 pp_copy = pp;
5 *pp_copy=11.11;
就像這樣如果沒有delete就會記憶體洩漏。如果是使用智慧型指標,那麼執行上面第4行語句時,會釋放第二行分配的記憶體。
總結: 智慧型指標是為了實現類似於
C 智慧型指標shared ptr簡單介紹
介紹shared prt對基本型別使用 include using namespace std int main 對自定義物件使用,可以看出智慧型指標的行為和普通指標非常類似 include using namespace std class classa classa int num int ma...
shared ptr智慧型指標
智慧型指標是乙個行為類似指標的物件。我們在使用堆記憶體時,都需要及時地進行釋放,避免造成記憶體洩漏。但我們偶爾也會忘記將其釋放掉,從而造成記憶體洩漏。並且,在釋放的時候,我們可能對某乙個指標進行了重複釋放,導致程式崩潰的問題。為了能夠解決這些問題,從而有了智慧型指標的設計。智慧型指標一共有四種,分別...
shared ptr(智慧型指標)
只要將 new 運算子返回的指標 p 交給乙個 shared ptr 物件 託管 就不必擔心在 寫delete p語句 實際上根本不需要編寫這條語句,託管 p 的 shared ptr 物件在消亡時會自動執行delete p。而且,該 shared ptr 物件能像指標 p 樣使用,即假設託管 p ...