C++智能指针shared_ptr
目录
- 1、什么是shared_ptr?
- 2、shared_ptr支持哪些操作?
- 3、如何创建shared_ptr的实例?
- 4、什么是shared_ptr的引用计数?如何查看?
- 5、shared_ptr何时释放其所指向的对象?
文章图片
1、什么是shared_ptr? C++11中包括
shared_ptr
在内的多种指针,都是模板类型,意味着使用者可以指定想要操作的类型。创建shared_ptr的方式如下:
shared_ptrp1; // p1=NULL
2、shared_ptr支持哪些操作?
- 创建:
shared_ptr p = make_shared
; - 判断是否为
NULL
:if(p) - 获取指向对象
- 等等
3、如何创建shared_ptr的实例? 通过C++的标准库中
make_shared()
函数动态的申请对象内存,并返回此对象的shared_ptr
:shared_ptrp1; p1 = make_shared (666);
4、什么是shared_ptr的引用计数?如何查看? 【C++智能指针shared_ptr】由于允许多个
shared_ptr
指向同一个对象,所以C++支持“引用计数”,也就是统计同一对象被多少个shared_ptr
所指向。当某对象的shared_ptr增加时,引用计数随之加一;当某对象的shared_ptr
减少时,引用计数随之减一。shared_ptr对象的use_count的函数成员返回引用计数值:
shared_ptrp2, p3; p2 = p1; p3 = p1; // p1,p2,p3指向同一对象,所以引用技术值为3cout << p2.use_count() << endl;
5、shared_ptr何时释放其所指向的对象? 当同一对象的引用计数变为0时,此对象所占空间就会被释放,
比如函数调用结束时:
class SP {public:~SP() { cout << "Destroy SP" << endl; }}; void auto_destroy() {// 创建SP类型的共享智能指针shared_ptrp1 = make_shared(); }
当调用
auto_destroy()
函数结束时,不需要手动的释放shared_ptr
所指向的内存空间,系统会自动的销毁SP对象。到此这篇关于C++智能指针shared_ptr的文章就介绍到这了,更多相关C++指针shared_ptr内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
推荐阅读
- #|《Effective Modern C++》学习笔记 - Item 29: 移动操作的“坑点”(它们可能不存在,开销不小或不会被调用)
- c语言查看当前指针所占空间,深入理解C语言指针及占据内存空间分享!
- c语言|c语言 指针 pdf,深入理解C语言指针.PDF
- 人工智能|抢工程师的饭碗(业内人士这样评价AlphaCode | 今夜科技谈)
- ICT|一文将大数据、云计算、物联网、5G(移动网)、人工智能等最新技术串起来
- 人工智能-YOLO专题|[YOLO专题-25](YOLO V5 - ultralytics代码解析-detect.py检测代码的详细执行流程)
- 人工智能-YOLO专题|[YOLO专题-10](YOLO V5 - ultralytics/detect检测代码的命令行参数详解)
- 物联网|【AliOS Things】首届灭虫活动,找Bug,赢AirPods,智能手表
- DPLL|DPLL 算法(求解k-SAT问题)详解(C++实现)
- C++初阶|C++入门