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

博客网站是自己做的吗沈阳城乡建设局官网

博客网站是自己做的吗,沈阳城乡建设局官网,江苏做网站xlec,google关键词seo上一篇博文中,我们使用单独的火箭发射函数,结果什么结果也没有得到,原因是launch_rocket()函数结束时,其内的局部对象counter生命周期也结束了 那么可以将counter改为指针吗?在堆中分配,这样当函数退出时&…

上一篇博文中,我们使用单独的火箭发射函数,结果什么结果也没有得到,原因是launch_rocket()函数结束时,其内的局部对象counter生命周期也结束了

那么可以将counter改为指针吗?在堆中分配,这样当函数退出时,它不会被释放。这样肯定是不行的,这样不会得到结果,还会造成内存泄露。

那么我们可以使用智能指针,如下图

代码:

这样还是没用,当函数一结束,智能指针对象counter还是立即释放。

运行结果:

原因分析:

当前的代码中,智能指针counter从来没有被复制,所以它的引用计数就只是1,当所处的函数结束,减至0,于是释放。这效果和当初的栈对象版本有何区别?

思路:

前面说到链式任务,即上一个任务结束前负责产生下一个任务;所有的异步任务都被丢给io_service对象管理;然后请看例中ios对象,它在main()中定义,所以虽不是全局变量,但至少在main()函数内将一直存活。

如果我们在每次产生新任务丢给io_service对象时,

都至少复制一次counter,一并丢给ios对象处理,智能指针counter所指向的实质一下,就将像接力跑中的接力棒一样一直存活,直至链式任务反应结束。

既然要走链式传递智能指针的路,也就同样面临两个关键环节。第一个环节是什么时候创建出智能指针。这一步已经完成,就在“launch_rocket()”函数中:

第二个环节是产生新任务的环节如何复制该智能指针,先看现有的代码:终点是划线的那行

有一个好消息:async_wait()函数的入参用到this,意味着正好把当前对象(*this)又传递下去了。当前对象(*this)是传给“_timer”对象,然后再由“_timer”对象作为事件回调所需的一个入参,传递给io_service对象。

有连个坏消息:第一,this永远是裸指针,此处它的类型是“DownCounter * ”,而非我们想要的shared_ptr<DownCounter>;第二,就算this是shared_ptr<DownCounter>类型的智能指针,对其进行取值操作(* this)之后,它也要被打回原形,恢复到DownCounter值类型,其后对它进行std::ref()也于事无补,不可能变回智能指针。

http://www.yayakq.cn/news/396394/

相关文章:

  • 安阳网站建设安阳郑州千锋教育培训机构怎么样
  • 建设银行官方网站地址做建筑材料哪个网站好一点
  • 注册域名后怎么做网站wordpress调用第一张图片不显示
  • 建设企业网站内容德阳seo优化
  • 怀化建设网站社保服务个人网站
  • 菜鸟教程网站怎么做快云助手网站建设视频教程
  • vs 团队网站开发学生网站作品
  • html产品介绍网页设计代码作业北京seo代理公司
  • 小型网站建设公司网站开发保密协议范本
  • 仓库erp系统有哪些外链seo服务
  • 网站费计入什么科目怎么用div做网站
  • 为什么要网站建设网站建设制作设计优化兰州
  • 郑州网站建设模板推广网站有效的方法
  • 网站原型设计和版式设计韩国出线形势
  • 没有网站怎么做链接视频教程工程建设指挥部网站
  • 中国seo网站基金项目实验室信息网站建设
  • 多个域名指向同一个网站甜品网站模板
  • 怎么把网站推广出去电商平台推广费用大概要多少
  • 单页网站开发费用怎么制作网站设计图片
  • iis 默认网站 删除柳州房地产网站建设
  • 聪明的上海网站如何给自己做网站
  • 长春网站seo广州品牌网站设计
  • 济南建设个人网站平台怎么找回网站
  • 网络网站是多少钱出国劳务信息网
  • 网站建设与管理期末考试题广西柳州科技学校网站建设
  • 优秀网站设计作品分析wordpress图片不同分辨率
  • 网站如何做微信支付宝支付宝支付宝福安城乡建设与规划局网站
  • 阿里巴巴网站建设wordpress采集站源码
  • 外贸网站优化排名全网整合营销公司
  • 虹口网站开发成都房建设部网站