指標指標 shared ptr簡單實用方法

2021-06-27 01:35:48 字數 816 閱讀 4892

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 ...