網(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的實例?
通過C++的標(biāo)準(zhǔn)庫中make_shared()
函數(shù)動態(tài)的申請對象內(nèi)存,并返回此對象的shared_ptr
:
shared_ptrp1;? p1 = make_shared (666);
4、什么是shared_ptr的引用計數(shù)?如何查看?
由于允許多個shared_ptr
指向同一個對象,所以C++支持“引用計數(shù)”,也就是統(tǒng)計同一對象被多少個shared_ptr
所指向。當(dāng)某對象的shared_ptr增加時,引用計數(shù)隨之加一;當(dāng)某對象的shared_ptr
減少時,引用計數(shù)隨之減一。
shared_ptr對象的use_count的函數(shù)成員返回引用計數(shù)值:
shared_ptrp2, p3; p2 = p1; p3 = p1; // p1,p2,p3指向同一對象,所以引用技術(shù)值為3 cout << p2.use_count() << endl;
5、shared_ptr何時釋放其所指向的對象?
當(dāng)同一對象的引用計數(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-06-18 深入了解Golang中的Slice底層實現(xiàn)_Golang
- 2022-03-27 Linux上搭載Nginx負(fù)載均衡配置使用案例詳解_nginx
- 2022-12-12 flutter?InheritedWidget使用方法總結(jié)_Android
- 2022-04-04 npm run ...自動打開瀏覽器
- 2022-06-06 uniApp、API ‘offCompassChange‘ is not yet implement
- 2022-10-26 c語言數(shù)據(jù)結(jié)構(gòu)之棧和隊列詳解(Stack&Queue)_C 語言
- 2023-01-14 C/C++高精度(加減乘除)算法的實現(xiàn)_C 語言
- 2022-04-18 python?list?count統(tǒng)計個數(shù)的實現(xiàn)_python
- 最近更新
-
- 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)雅實現(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)用詳解
- 聊聊消息隊列,發(fā)送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠(yuǎn)程分支