1、靜態記憶體用來儲存區域性static物件、類static資料成員以及定義在任何函式之外的變數
2、棧記憶體用來儲存定義在函式內的非static物件。分配在靜態或棧記憶體中的物件由編譯器自動建立和銷毀
3、堆記憶體,儲存動態分配的物件
4、兩種智慧型指標shared_ptr允許多個指標指向同乙個物件,unique_ptr則獨佔所指向的物件。
標準庫中定義的乙個名為week_ptr的伴隨類,一種弱引用,指向shared_ptr所管理的物件。都定義在memory標頭檔案
5、shared_ptr和unique_ptr都支援的操作
shared_ptrsp 空只能指標,指向型別為t的物件
unique_ptrup
p p用作條件判斷,若p指向乙個物件,則為true
*p 解引用、獲取它指向的物件
p->mem 等價於(*p).mem
p.get() 返回p中儲存的指標 ,若智慧型指標釋放了其物件,返回的指標所指向的物件也就消失了
swap(p,q) 等價p.swap(q)交換p和q指標
6、shared_ptr獨有的操作
make_shared(args) 返回乙個shared_ptr,指向乙個動態分配的型別為t的物件。使用args初始化此物件
shared_ptrp(q) p是q的拷貝;遞增q中的計數器、q中的指標鼻血能轉化為t*
p=q p和q都是shared_ptr,所儲存的指標必須能相互轉化。遞增q中的計數器,遞減p中的計數器.p的引用計數為0,釋放記憶體
例如:auto r = make_shared(42);
r = q ; //給r賦值,指向另乙個位址;
//遞增q指向的物件的引用計數;
//遞減r原來指向的物件引用計數
//r原來指向的物件沒有引用者,自動釋放
p.unique() 若p.use_count()為1,返回true、否則返回false
p.use_count() 返回與p共享物件的智慧型指標數量;主要用於除錯
C 中的智慧型指標
長久以來 c 最被人詬病的就是它的記憶體管理,寫個稍微複雜點的程式就經常會碰到記憶體洩漏問題。為了解決這個問題,c 也做了許多努力。在 c 98 標準中首先提出了智慧型指標的概念,引入了 auto ptr。但是在實踐中,auto ptr 有不少問題。因此在 c 11 標準中對原有的智慧型指標又做了進...
c 中的智慧型指標
1.智慧型指標的作用 為了防止記憶體洩露的問題 c 程式設計中使用堆記憶體是非常頻繁的操作,堆記憶體的申請和釋放都由程式設計師自己管理。程式設計師自己管理堆記憶體可以提高了程式的效率,但是整體來說堆記憶體的管理是麻煩的,c 11中引入了智慧型指標的概念,方便管理堆記憶體。使用普通指標,容易造成堆記憶...
C 中的智慧型指標
c 中的四個智慧型指標分別是 1.shared ptr 2.unique ptr 3.weak ptr 4.auto ptr 已經被c 11棄用 在c 11的環境中會爆警告warning auto ptr is deprecated 智慧型指標的作用是管理乙個指標。因為存在以下這種情況 申請的空間在...