C++:指针:智能指针
admin
2024-02-11 20:53:36
0

1:引用计数:

  1.         引用计数是为了防止内存泄漏而产生的一种方法,其基本思想是对于动态分配的对象,进行引用计数,每当增加一次对对象的引用,那么引用对象的引用计数就正价一次,每删除一次引用,引用计数就会减一次,当一个引用对象的引用计数为零时,就会自动删除指向的堆内存。
  2.         在传统C++编程中,需要手动释放资源来避免忘记释放资源带来的资源泄漏,这是通过 new和delete实现的,C++11中通过引入智能指针的概念,使用了引入计数的想法,使得程序员不需要关心手动释放内存,这些智能指针包括 : std::shared_prt,std::unique_ptr,std::weak_ptr 。使用他们需要包含头文件。

2:std::shared_ptr

2.1 原理简介

std::shared_ptr是C++ 提供的最常用的智能指针,采用引用计数,多个shared_ptr中的 T *ptr指向同一个内存区域(同一个对象),并且他们(多个shared_ptr)共同维护一个引用计数器,记录着同一个实例被引用的次数,当引用次数大于0时内存可用,等于0时释放内存。实现了任何地方都不是使用时自动删除指针,帮助解决消除内存泄漏和悬空指针的问题。

2.2 :底层原理解析

每个std::shared_ptr指针在内部维护着两个内存位置:

  1. 指向对象的指针
  2. 用于控制引用计数数据的指针
  • 当新的 shared_ptr对象与指针关联时,则在其构造函数中,将与此指针关联的引用计数增加1。
  • 当任何 shared_ptr对象超出作用域时,则在析构函数中,将与此指针关联的引用计数减1。
  • 如果最终引用计数为0,就表示没有其他任何 shared_ptr对象与此内存关联,那么在这种情况下,shared_ptr就会自动调用 delete函数删除内存,不需要程序员自己处理,完美的解决了内存泄漏的隐患
  • 注意:shared_ptr最大的一个陷阱就是循环引用的问题,循环引用会倒追内存无法正常正确的被释放,从而导致内存泄漏。

下面是 shared_ptr 内部原理实例

// shared_ptr 伪代码template
class Shared_ptr {pubolic:........private:T *_ptr;    // 指针指向的内存区域int *_refCount; // 引用次数
}

相关内容

热门资讯

SpaceX按下万亿IPO按钮... 上周五的大爆发,让怀疑的人的变成了踏空者! 商业航天的二波,或许才刚刚开始。 近日,马斯克在社交媒体...
新一代消费者更愿意为“意义”买... 当年轻人宁愿为一场森林浴或一次深夜树洞对话付费,也不愿多喝一杯应酬酒——我们便知道,消费的底层逻辑正...
“A系列”指数飘红,A500E... 截至午间收盘,中证A500指数上涨0.02%,中证A100指数、中证A50指数均上涨0.4%,资金回...
库里26分爱德华兹空砍32+1... 【搜狐体育战报】北京时间1月26日NBA常规赛,客场作战的勇士以111-85击败森林狼,森林狼遭遇5...
AI消灭学区房神话背后,新的教... 当北京西城区的学区房价格突破每平米20万元时,一个来自云南山村的孩子正在用AI家教学习微积分——这看...
埃泰克主板IPO提交注册 北京商报讯(记者 马换换 李佳雪)1月23日晚间,上交所官网显示,芜湖埃泰克汽车电子股份有限公司(以...
资管周报:新年公募基金首个新规... 热点导读 公募业绩比较基准新规七大细节最受关注,多家基金一线解读 官宣数据出炉!2025年末银行理财...
中微公司2025年净利预增超2... 1月26日上午,三大指数走低,前期大热的商业航天、半导体设备板块深入回调。半导体设备ETF(5619...
广货行天下,离不开2201万技... “广货行天下”,行的是什么? “广货行天下”春季行动启动仪式已于1月15日举办,顺利打响第一炮,成功...
原创 美... 美国最怕的事情发生了!81岁国产芯片设备巨头中微公司董事长尹志尧,放弃美国籍,恢复中国籍,带队攻克2...
清晨,全线杀跌!三大“黑天鹅”... 1月26日早上,外围市场极不平静。美股股指期货盘初走低,标普500指数期货下跌0.9%,纳斯达克10...
阶跃星辰获超50亿融资创纪录 2026年1月26日,上海大模型创业公司阶跃星辰(StepFun)完成超50亿人民币B+轮融资,一举...
原创 特... 这事儿闹得比好莱坞大片还戏剧!特朗普重返白宫的第一把火,直接烧向了几百年老盟友法国——一纸200%关...
现货黄金站上5000美元,黄金... 近期地缘扰动加剧,现货黄金突破5000美元大关,金价持续走高,跟踪黄金股板块的黄金股票ETF(517...
原创 李... 执掌TCL40多年后,69岁的李东生开始逐步淡出一线。70后“老兵”王成接过TCL科技CEO的帅印,...
原创 黄... 2026年1月22日,国内黄金呈现“原料价、交易价与零售价分层”格局:上海金市9999报1084元/...
科技企业密集发债加力AI投资 本报记者 韩昱 近期,科技企业发债案例频现。 例如,1月23日,快手科技发布公告称,公司已向香港联合...
住友商事收购野村的银行广告业务 野村1月26日宣布,与住友商事已就野村开展的银行广告业务达成业务转让协议,该业务将转让给住友商事。根...
贾国龙:将回归一线,不再打造个... 图片来源:视觉中国 再次经历舆论风暴后,西贝餐饮集团创始人贾国龙近日表示,愿意回归一线、不再打造个人...
有色金属概念股走强,有色、矿业... 有色概念股走强,中金黄金涨超9%,洛阳钼业、山东黄金涨超7%,紫金矿业涨超6%。 受盘面影响,有色、...