網(wǎng)站首頁 編程語言 正文
1、什么是shared_ptr?
C++11中包括shared_ptr
在內(nèi)的多種指針,都是模板類型,意味著使用者可以指定想要操作的類型。
創(chuàng)建shared_ptr的方式如下:
shared_ptrp1; // p1=NULL
2、shared_ptr支持哪些操作?
- 創(chuàng)建:
shared_ptr p = make_shared
; - 判斷是否為
NULL
:if(p) - 獲取指向?qū)ο?/li>
- 等等
3、如何創(chuàng)建shared_ptr的實(shí)例?
通過C++的標(biāo)準(zhǔn)庫中make_shared()
函數(shù)動態(tài)的申請對象內(nèi)存,并返回此對象的shared_ptr
:
shared_ptrp1;? p1 = make_shared (666);
4、什么是shared_ptr的引用計(jì)數(shù)?如何查看?
由于允許多個shared_ptr
指向同一個對象,所以C++支持“引用計(jì)數(shù)”,也就是統(tǒng)計(jì)同一對象被多少個shared_ptr
所指向。當(dāng)某對象的shared_ptr增加時,引用計(jì)數(shù)隨之加一;當(dāng)某對象的shared_ptr
減少時,引用計(jì)數(shù)隨之減一。
shared_ptr對象的use_count的函數(shù)成員返回引用計(jì)數(shù)值:
shared_ptrp2, p3; p2 = p1; p3 = p1; // p1,p2,p3指向同一對象,所以引用技術(shù)值為3 cout << p2.use_count() << endl;
5、shared_ptr何時釋放其所指向的對象?
當(dāng)同一對象的引用計(jì)數(shù)變?yōu)?時,此對象所占空間就會被釋放,
比如函數(shù)調(diào)用結(jié)束時:
class SP { public: ?? ?~SP() { cout << "Destroy SP" << endl; } }; void auto_destroy() { ? ? // 創(chuàng)建SP類型的共享智能指針 ?? ?shared_ptrp1 = make_shared (); }
當(dāng)調(diào)用auto_destroy()
函數(shù)結(jié)束時,不需要手動的釋放shared_ptr
所指向的內(nèi)存空間,系統(tǒng)會自動的銷毀SP對象。
原文鏈接:https://zhuanlan.zhihu.com/p/126563935
相關(guān)推薦
- 2023-05-05 Linux中g(shù)rep命令詳解_linux shell
- 2022-09-05 C語言深入淺出分析函數(shù)指針_C 語言
- 2022-06-26 Git配置.gitignore文件忽略被指定的文件上傳_相關(guān)技巧
- 2022-08-31 ASP.NET?Core的日志系統(tǒng)介紹_實(shí)用技巧
- 2022-10-26 jQuery中DOM?屬性使用實(shí)例詳解下篇_jquery
- 2023-12-20 UML類圖中各箭頭表示總結(jié)
- 2022-11-06 Python命令行參數(shù)解析包argparse的使用詳解_python
- 2022-06-01 C#?多窗口委托通信的實(shí)現(xiàn)_C#教程
- 最近更新
-
- window11 系統(tǒng)安裝 yarn
- 超詳細(xì)win安裝深度學(xué)習(xí)環(huán)境2025年最新版(
- Linux 中運(yùn)行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎(chǔ)操作-- 運(yùn)算符,流程控制 Flo
- 1. Int 和Integer 的區(qū)別,Jav
- spring @retryable不生效的一種
- Spring Security之認(rèn)證信息的處理
- Spring Security之認(rèn)證過濾器
- Spring Security概述快速入門
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權(quán)
- redisson分布式鎖中waittime的設(shè)
- maven:解決release錯誤:Artif
- restTemplate使用總結(jié)
- Spring Security之安全異常處理
- MybatisPlus優(yōu)雅實(shí)現(xiàn)加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務(wù)發(fā)現(xiàn)-Nac
- Spring Security之基于HttpR
- Redis 底層數(shù)據(jù)結(jié)構(gòu)-簡單動態(tài)字符串(SD
- arthas操作spring被代理目標(biāo)對象命令
- Spring中的單例模式應(yīng)用詳解
- 聊聊消息隊(duì)列,發(fā)送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠(yuǎn)程分支