1. 程式人生 > >C++ primer 第十二章筆記之 動態內存

C++ primer 第十二章筆記之 動態內存

weak memory ont 創建 tor size prim 自動 pre

動態內存:

運算符:new,delete

智能指針:

頭文件:memory
shared_ptr:允許多個指針指向同一個對象;
unique_ptr:"獨占"所指向的對象;
weak_ptr:一種弱引用,指向shared_ptr所管理的對象;

shared_ptr類

智能指針也是模板,創建指針時,提供指針指向的類型;

//創建:
shared_ptr<string> p1;
//若p1不為空,檢測它是否指向一個空string
if( p1 &&p1->empty() )
    *p1 = "cjz";

make_shared 函數

shared_ptr<int> p3 = make_shared<int>(24);
shared_ptr<string> p4 = make_shared<string>(10,‘9‘);
shared_ptr<int> p5 = make_shared<int>();
//使用auto:p6指向一個動態分配的空vector<string>
auto p6 = make_shared<vector<string>>();

引用計數:一旦一個shared_ptr的計數器變為0,它就會自動釋放自己所管理的對象;

shared_ptr自動銷毀所管理的對象,通過 析構函數 完成;

shared_ptr還會自動釋放相關聯的內存;

對於一塊內存,只要有任何shared_ptr對象引用它,它就不會被釋放掉;

使用動態內存的一個常規原因是允許多個對象共享相同的狀態;

C++ primer 第十二章筆記之 動態內存