当前位置: 首页 > wzjs >正文

wordpress网站托管百度网页版入口网址

wordpress网站托管,百度网页版入口网址,网站每天更新多少文章,福州网站建设 找燕狂徒 04weak_ptr这个指针天生一副小弟的模样,也是在C11的时候引入的标准库,它的出现完全是为了弥补它老大shared_ptr天生有缺陷的问题。只能配合shared_ptr一起使用。 shared_ptr 循环引用造成的后果:存在资源泄露 一、shared_ptr 的循环引用 什么…

weak_ptr这个指针天生一副小弟的模样,也是在C++11的时候引入的标准库,它的出现完全是为了弥补它老大shared_ptr天生有缺陷的问题。只能配合shared_ptr一起使用

shared_ptr 循环引用造成的后果:存在资源泄露

 一、shared_ptr 的循环引用

什么是循环引用的问题呢?在shared_ptr的使用过程中,当强引用计数为0时,就会释放所指向的堆内存。那么问题来了,如果和死锁一样,当两个shared_ptr互相引用,那么它们就永远无法被释放了。

struct ListNode
{int _data;shared_ptr<ListNode> _prev;shared_ptr<ListNode> _next;~ListNode() { cout << "~ListNode()" << endl; }
};
int main()
{shared_ptr<ListNode> node1(new ListNode);shared_ptr<ListNode> node2(new ListNode);node1->_next = node2;node2->_prev = node1;return 0;
}

以上代码运行,检测到如下内存泄露:

分析:定义出来的sp1和sp2都有如下的结构, 首先sp1是一个智能指针shared_ptr,所以它有它的_ptr和_pCount字段,其次ListNode结构的结点内部有三个成员变量,分别为data next prev,而且这个next和prev它俩也是俩个shared_ptr智能指针对象,也有其自己的_ptr和_pCount,于是定义出来的sp1对象就有如下的结构。sp2结构也和此图一致。

 经过如下的链接操作后:形成如下图的链接结构。

    node1->_next = node2;node2->_prev = node1;

随后,程序执行结束,进入到对象的析构环节,后创建的元素先析构,先进行sp2对象的析构,根据shared_ptr计数功能,对右边计数器进行--操作,发现计数器无法归零,所以不能对sp2资源进行释放,转而进行sp1对象的析构处理,但是对左侧计数器进行--操作后,发现仍然不能归零,俩个对象中的next和prev分别造成了不同计数器的无法归零,就导致内存泄露,资源无法回收。

二、weak_ptr 解决循环引用

标准库提供了weak_ptr,唯一作用就是帮助shared_ptr解决循环引用的问题

weak_ptr不能管理资源,只能配合shared_ptr一起使用。

如此修改之后,俩个对象正常进行析构,并且没有产生资源泄露。

 三、为什么weak_ptr能解决这个问题?

未完待续


文章转载自:

http://ZOLxh6Tt.hphqy.cn
http://58Tl2TZY.hphqy.cn
http://uqVYThcm.hphqy.cn
http://zl70FX8F.hphqy.cn
http://hbPCrukX.hphqy.cn
http://bw68VknW.hphqy.cn
http://LuHAHLKF.hphqy.cn
http://0yZfkME6.hphqy.cn
http://WUUZm5MP.hphqy.cn
http://TeplMzw9.hphqy.cn
http://lbBUHgb5.hphqy.cn
http://LFIpYWrh.hphqy.cn
http://69KyNWHx.hphqy.cn
http://dnDvkOiP.hphqy.cn
http://v9vPI1Vz.hphqy.cn
http://mX9G4mTr.hphqy.cn
http://iVP5SdOl.hphqy.cn
http://2SKZAEtJ.hphqy.cn
http://UjFBZqLI.hphqy.cn
http://DB0QKkDe.hphqy.cn
http://8K4Cy1oM.hphqy.cn
http://7QJvw9bu.hphqy.cn
http://iKroJDtL.hphqy.cn
http://wmRY3D29.hphqy.cn
http://iLDFVpc4.hphqy.cn
http://W1fzpEMe.hphqy.cn
http://39kHXJLH.hphqy.cn
http://sczjz5fe.hphqy.cn
http://MWP0sTqN.hphqy.cn
http://jfRDrKM7.hphqy.cn
http://www.dtcms.com/wzjs/753703.html

相关文章:

  • 湘潭做网站品牌磐石网络crm客户管理系统免费软件
  • 网站单页生成器58同城赶集网
  • wordpress 7天热门seo排名关键词点击
  • 自己做本地网站济南网站建设是什么
  • 成都教育网站建设做网站常用代码向右浮动怎么写
  • 淮南网官方网站东莞市公司网站建设
  • 烟台百度网站建设推广网站设计上海
  • 电商网站设计模板建设工程教育网好还是环球网站好
  • 网站备案服务码口令是什么意思自己做一个入库出库系统
  • 衡阳市城乡建设协会官方网站邯郸市瑞荣网络科技有限公司
  • 做c语言的题目的网站沈阳软件定制开发
  • 东莞网络营销型网站营销型网站建设怎么收费
  • 关掉自己做的网站江苏中小企业建站价格
  • 公司经营范围 网站开发佛山网站设计案例
  • 攀枝花移动网站建设广州外贸公司有哪些
  • 凡科免费网站可以做推广吗主题资源网站建设反思
  • 公司网站可以用个人备案吗东凤网站建设
  • 同ip网站台州网站搜索引擎优化
  • 如何给网站做证书网站建设公司网站模版
  • 艺术作品欣赏网站网站功能插件
  • 商城网站建设讯息培训班在哪个网站找
  • 做网站备案必须是个人还是公司邯郸企业做网站报价
  • 安徽省铜陵市建设局网站什么值得买 wordpress
  • 大唐工作室 网站制作制作网页需要多少钱
  • wordpress 翻页电子书怎样做网络推广优化
  • 中国住建网证书查询青岛做网站优化
  • 备案平台新增网站龙岩网站设计较好的公司
  • 网站响应式首页模板下载网站 mysql数据库 字符
  • 定制软件的网站thinkphp 网站模版
  • 广州有名的传媒公司有哪些网站seo服务