问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

C++智能指针的简单分析——shared_ptr和weak_ptr

发布网友 发布时间:2024-09-30 15:05

我来回答

1个回答

热心网友 时间:2024-09-30 18:47

C++17智能指针:shared_ptr与weak_ptr的简单概述


C++17标准中的智能指针,如shared_ptr,主要用于管理和控制对象的生命周期,尤其在多所有者场景下。本文仅对其做基础介绍。


shared_ptr

shared_ptr是一种智能指针类型,它允许多个所有者共同维护对象的生存状态。使用shared_ptr时,可以通过添加删除器和分配器,但这些内容将在后续笔记中探讨。


当且仅当以下条件满足时,shared_ptr会销毁其所管理的对象:...


类型定义与模型

shared_ptr中包含element_type(C++17后为std::remove_extent)和weak_ptr类型。其内部结构包括指向对象和控制块的指针,基于__shared_count类。


shared_ptr的关键方法包括get()、use_count()、unique()、reset()和swap(ptr)等。


注意事项

尽管shared_ptr提供get()获取指针,但需谨慎使用,避免野指针。直接用指针构造shared_ptr可能导致资源重复删除,不建议。


weak_ptr

相比之下,weak_ptr更加简单,它不直接控制对象,仅作为shared_ptr的弱引用。使用weak_ptr时,它不会改变shared_ptr的引用计数。


weak_ptr的典型操作有reset()、use_count()、expired()和lock(),它们在弱引用管理上各有特色。


应用示例

weak_ptr有助于避免循环引用导致的内存问题,以及在缓存和观察者模式中的合理使用。


附录:__shared_count和__shared_weak_count的区别

__shared_count和__shared_weak_count分别用于强引用和弱引用计数,后者添加了add_weak方法以处理弱引用。


remove_extent

remove_extent是移除数组维度的类型工具,用于简化类型转换。

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
竹笋快速生长的过程叫拔节 ...上打4000块钱认证金就能把卡号该过要打认证金吗? 我想问问房间太过潮湿怎么处理 装修好房屋墙面防潮怎么做 潮湿怎么解决房子潮湿如何解决 斜面的摩擦力问题 像"斑斓“这样表示颜色多的词语还有哪些? 你能写出几个与十二生肖的有... 广元红星塔相关背景 广元红星塔简介 西红柿疙瘩汤如何做简单又美味? Boost程序库完全开发指南:1.1-C++基础知识点梳理 c++ :智能指针 unique_ptr与shared_ptr ...我被蛇咬,出血中毒,之后把蛇捏死了,又自己把毒吸了出来?_百度... 我梦见我中了蛇毒,但那条毒蛇又用嘴把我中的毒吸了出来。这预示着什么... 梦见庙里的神像倒了,女人梦见佛像倒了 谁有好听一点的昵称? 我梦到一个人坐在念经 我就过去看之后 他讲了许多关于佛法 后告诉我... 微信昵称文字简单好记 有个性简洁的网名最新 iPhone8怎么开启低电量模式省电? 凯文-乐福哪支球队? 有什么软件可以在图片上编辑字? P图好的有哪些 电话报停了飞信就不能用了? 为啥和飞信的电话打不通 前端开发学习教程:2023最新vue3学习指南(cdn方式渐进式使用vue3) vue3现在成熟了吗? vue3出来会有人用么? vue3现在公司用的多吗? OPPO a57为什么?和平精英的陀螺仪开了不能用 中国的猪跑到英国叫什么 shared_ptr的应用场景以及使用注意事项 shared_ptr概要 vivox9备份在哪里 qq游戏怎么关闭在玩显示? 高分: 怎样改善我的皮肤??? 高分求皮肤保养 华为makebokeD14电脑重置后word不能用了matebook重置office还能用吗 高分请教一下关于皮肤的问题 皮肤问题 专家进~ 高分 油性皮肤的保养问题(高分) 急……关于皮肤全程护理的问题!给高分! 高分 关于我的皮肤的问题 高分真心求皮肤类专家帮看下 红米7A将在印度何时发布? 大学报志愿什么是提前批 如何根据几何光学的原理来调节望远镜,光杠杆和标尺之间的位置_百度知 ... 交换机可以当做路由器用么 我现在连的电信的网 用猫接在交换机上了... 为什么我的女生不让我看她的朋友圈了 皮雕雕刻步骤 五人强力集团之一:里姆斯基-科萨科夫