C include 智慧型指標

2021-08-18 10:11:08 字數 1123 閱讀 4908

先轉過來,稍後再整理!!

*************************auto_ptr********************

1 auto_ptr

2 unique_ptr

1 auto_ptr

一、解決什麼問題?

c++的auto_ptr所做的事情,就是動態分配物件以及當物件不再需要時自動執行清理。

二怎麼解決?

1.基本思想?

2.規則?

使用std::auto_ptr,要#include 。

double *p = new double;//為指標分配記憶體

std::auto_ptrautop(p);

//繼承性指標,必須依賴上面的指標p

//建立智慧型指標管理指標p指向的記憶體,可以自動釋放記憶體,不用delete就可以自動刪除

//搭配原生指標p使用,不用擔心多delete或者少delete

//auto_ptr更多用於管理類和物件的記憶體

3.流程?

4.**?

#include #include void main()

system("pause");

}

*************************unique_ptr******************** 

unique_ptr是一種定義在中的智慧型指標(smart pointer)。它持有對物件的獨有權——兩個unique_ptr不能指向乙個物件,不能進行複製操作只能進行移動操作。unique_ptr在超出作用域,即以下情況時它指向的物件會被摧毀:

unique_ptr指向的物件被破壞

物件通過operator=()或reset()被指定到另乙個指標)

unique_ptr還可能沒有物件,這種情況被稱為empty。

//c++11新指標

//std::unique_ptr《指標指向的變數資料型別》指標變數名(new 指標指向的變數資料型別);

std::unique_ptrpdb(new double);

#include #include void main()

system("pause");

}

智慧型指標 強弱智慧型指標

在平時編寫 的時候經常會用到new來開闢空間,而我們開闢出來的空間必須得手動去delete他,但是如果程式設計師忘記去手動釋放那邊會出現乙個麻煩的問題,記憶體洩漏!或者是一塊記憶體被多個函式同時使用時,如果其中乙個函式不知道還有其他人也在使用這塊記憶體而釋放掉的話同樣也會引起程式的崩潰。引起記憶體洩...

智慧型指標學習

最近接觸到智慧型指標很多,於是研究了一下智慧型指標的原理,寫下自己的心得體會,有不對的還請指正。智慧型指標產生的目的 因為在c 中,存在非常複雜的指標錯誤問題,例如,某個物件生成後,指向該物件的指標可能有多個,當我們用delete語句刪除其中的乙個指標後,物件就被銷毀,那麼其餘指向該物件的指標就會懸...

智慧型指標3

include include using namespace std define test smartptr class stub class sentry sentry private int lock template class refcountingtraits void unrefer...