C++ Primer 5th笔记(chap 12 动态内存)智能指针概述
生活随笔
收集整理的這篇文章主要介紹了
C++ Primer 5th笔记(chap 12 动态内存)智能指针概述
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
1. 對象的生存期
| 全局對象 | 程序啟動時分配,程序結束時銷毀 | |
| 靜態內存 | 局部static對象類static數據成員 | 第一次使用時分配,程序結束時銷毀 |
| 棧內存 | 定義在函數內的非static對象局部自動對象 | 進入塊時分配,離開塊時銷毀 |
| 動態內存 | 定義在任何函數之外的變量 | 程序用堆來存儲動態分配的對象顯式創建,顯式銷毀 |
2. 以前的內存管理
2.1 new 創建內存對象, delete刪除內存對象
//直接初始化方式來初始化一個動態分配的對象 int *pi = new int(2104); string *ps = new string(10, '9'); vector<int> *pv = new vector<int>{0,1,2,3,4,5,6};//值初始化,在類型名后加一對空括號即可 string *ps1 = new string; string *ps2 = new string(); int *pi1 = new int; int *pi2 = new int();2.1 動態分配的const對象
const int *pci = new const int(1024); const string *pcs = new const string;//返回一個指向const的指針2.1. delete風險
dangling pointer: 被delete后的指針
//這種保護也是有限的, p雖然是空了,但是q還是在的。delete之后得重置指針值為null int *p(new int(42)); auto q = p; delete p; p = nullptr3. 智能指針
| shared_ptr | 允許多個指針指向同一個對象 |
| unique_ptr | 某個時刻只能有一個 unique_str 指向一個給定對象 |
| weak_ptr | 弱引用,指向shared_ptr所管理的對象 |
shared_ptr 和unique_ptr都支持的操作
| shared_ptr sp unique_ptr up | 空智能指針,可以指向類型為T的對象 |
| p | 將p用作一個條件判斷,若p指向一個對象,則為true |
| *p | 解引用p,獲得它指向的對象 |
| p->mem | 等價于(*p).mem |
| p.get() | 返回p中保存的指針,要小心使用;若智能指針釋放了其對象,返回的指針所指向的對象也就消失了 |
| swap(p,q)/p.swap(q) | 交換p和q中的指針 |
總結
以上是生活随笔為你收集整理的C++ Primer 5th笔记(chap 12 动态内存)智能指针概述的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: C++ Primer 5th笔记(cha
- 下一篇: C++ Primer 5th笔记(cha