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次方的完整結果。研究乘法的規律會發...