C 總複習6 C 程式設計 智慧型指標

2021-10-09 03:45:14 字數 1037 閱讀 3420

1.auto_ptr

2.unique_ptr

3.shared_ptr

4.weak_ptr

5.scoped_ptr

newdelete

容易出現記憶體洩漏

解決方法:自主的記憶體**機制

人為開闢

系統釋放

int* p = new int;

所有權交給棧上的乙個變數

棧    系統開闢     系統釋放

堆    人為開闢     人為釋放

物件的生成

開闢記憶體

呼叫建構函式

物件的銷毀

呼叫析構函式

釋放記憶體

交給有名稱的物件管理,物件生存週期到了,棧由系統銷毀,

實現了系統呼叫析構函式,釋放堆記憶體

c++98  

auto_ptr

1. 所有權唯一:舊智慧型指標所有權賦給新智慧型指標,舊智慧型指標的所有權被取消

2.可能導致智慧型指標提前失效

#include int mian()

c++11   boost庫

1.scope_ptr( unique_ptr)    

所有權唯一

禁止拷貝,移動賦值等操作轉移許可權

不能實現共享

2.shared_ptr   (強智慧型指標)

允許多個智慧型指標物件指向同一堆記憶體

共享引用計數:

記錄該堆記憶體有多少個物件指向

多乙個物件指向      +1

少乙個物件指向      -1

最多乙個物件銷毀    釋放該對記憶體

問題:智慧型指標的相互引用問題,會導致記憶體洩漏

3.weak_ptr  ( 弱智能指標)

解決強智慧型指標相互引用的問題

(1)不能單獨使用   必須結合shared_ptr使用

(2)不處理引用計數

c 智慧型指標複習筆記

shared ptr 變數出了作用域之後智慧型指標會析構,引用計數 1,直到為0時銷毀物件,呼叫物件的析構函式,哪怕是出現了異常。weak ptr解決迴圈引用問題 unique ptr它不允許其他的智慧型指標共享其內部的指標,不允許通過賦值將乙個unique ptr賦值給另乙個unique ptr ...

C 複習之智慧型指標

複習智慧型指標時正好看到new的最基本用法 內建的new操作符,經常使用的t ptr new t 分配記憶體,呼叫建構函式 呼叫operator new分配記憶體,operator new sizeof a 呼叫建構函式生成類物件,a a 呼叫placement new 返回相應指標 事實上,分配記...

趣味程式設計6 c

高次方數的尾數 求13的13次方的最後三位數。問題分析與演算法設計 解本題最直接的方法是 將13累乘13次後擷取最後三位即可。但是由於計算機所能表示的整數範圍有限,用這種 正確 的演算法 不可能得到正確的結果。事實上,題目僅要求後三位的值,完全沒有 必要求13的13次方的完整結果。研究乘法的規律會發...