日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > c/c++ >内容正文

c/c++

C++ Primer 5th笔记(chap 12 动态内存)智能指针概述

發布時間:2025/3/21 c/c++ 20 豆豆
生活随笔 收集整理的這篇文章主要介紹了 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 = nullptr

3. 智能指針

指針類型說明
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中的指針
《新程序員》:云原生和全面數字化實踐50位技術專家共同創作,文字、視頻、音頻交互閱讀

總結

以上是生活随笔為你收集整理的C++ Primer 5th笔记(chap 12 动态内存)智能指针概述的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。