本質是存放在棧上的模擬物件只是在棧內部包了一層指標,指標指向的是堆記憶體。到時一同釋放。
shared_ptr內部的引用計數是執行緒安全的,但是物件的讀取需要加鎖,它初始化傳入指標通過建構函式或者使用make_shared函式,不能將指標直接賦值給乙個智慧型指標,乙個是類,乙個是指標。
(1)拷貝使得物件的引用計數加1,賦值使其減1。當為0時,自動釋放記憶體。後來的物件引用計數加1,指向後來的物件。
(2)get函式獲取原始指標,不要用乙個原始指標初始化多個shared_ptr,否則會造成二次釋放同一記憶體。
(3)注意避免迴圈引用,shared_ptr的乙個最大的陷阱時迴圈引用,迴圈引用會導致堆記憶體無法正確釋放,導致記憶體洩漏。
C 11智慧型指標
本文介紹c 的四種智慧型指標,其中後三種是c 11新增加的,auto ptr已被棄用。要編譯c 11,需要安裝g 4.8 sudo add apt repository ppa ubuntu toolchain r test sudo apt get update sudo apt get inst...
c 11 智慧型指標
如果在程式中使用new從堆 自由儲存區 分配記憶體,等到不需要時,應使用delete將其釋放。c 引入了智慧型指標auto ptr,以幫助自動完成這個過程。c 11摒棄了auto ptr,並新增了三種智慧型指標 unique ptr,shared ptr,weak ptr。一.auto ptr,un...
c 11 智慧型指標
首先來看shared ptr,先貼一小部分vs2013裡的實現 template class shared ptr template class shared ptr public ptr base ty template explicit shared ptr ux px template cla...