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

如何做一个公司网站学做川菜最好的网站

如何做一个公司网站,学做川菜最好的网站,济南网络公司注册,电子商务网站开发的基本原则文章目录为什么需要智能指针?内存泄漏什么是内存泄漏,内存泄漏的危害内存泄漏分类(了解)如何避免内存泄漏智能指针的使用及原理smart_ptrauto_ptrunique_ptrshared_ptr线程安全的解决循环引用weak_ptr删除器为什么需要智能指针&am…

文章目录

  • 为什么需要智能指针?
  • 内存泄漏
    • 什么是内存泄漏,内存泄漏的危害
    • 内存泄漏分类(了解)
    • 如何避免内存泄漏
  • 智能指针的使用及原理
    • smart_ptr
    • auto_ptr
    • unique_ptr
    • shared_ptr
      • 线程安全的解决
      • 循环引用
    • weak_ptr
  • 删除器

为什么需要智能指针?

我们先来看一段代码:
在这里插入图片描述

大家觉得这段代码有什么问题?
发生了,内存泄漏。
在这里插入图片描述

因为p1,p2,p3指向的空间没有释放掉导致的。这就是异常安全问题。那要怎么解决呢?我们下面再回答。

内存泄漏

什么是内存泄漏,内存泄漏的危害

在这里插入图片描述
在这里插入图片描述

内存泄漏分类(了解)

  • 堆内存泄漏(Heap leak)
    堆内存指的是程序执行中依据须要分配通过malloc / calloc / realloc / new等从堆中分配的一块内存,用完后必须通过调用相应的 free或者delete 删掉假设程序的设计错误导致这部分内存没有被释放,那么以后这部分空间将无法再被使用,就会产生Heap Leak
  • 系统资源泄漏
    程序使用系统分配的资源比方套接字、文件描述符、管道等没有使用对应的函数释放掉,导致系统资源的浪费,严重可导致系统效能减少,系统执行不稳定

如何避免内存泄漏

在这里插入图片描述

智能指针的使用及原理

在这里插入图片描述

smart_ptr

在这里插入图片描述
那么smart_ptr能解决上面遗留的问题吗?答案是可以的。
在这里插入图片描述
在这里插入图片描述
那么这个smart_ptr还有一些什么问题呢?
在这里插入图片描述

没错就是拷贝构造或者拷贝赋值的时候就会出问题,因为析构的时候同一块空间会被析构两次,这时候就会报错。那么该怎么解决呢?

auto_ptr

这时候就有人提出了管理权转移的思想来解决这个问题。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
大家可以看到auto_ptr很好的解决了上面的问题,但是auto_ptr自身有一个很大的问题大家知道吗?就是悬空问题。
在这里插入图片描述
从上图可以看出p1变成悬空指针,且程序无法正常运行。
从中可以看出auto_ptr是一个失败的设计,并且很多公司都禁止使用auto_ptr.

unique_ptr

经过上面的尝试发现不行后,有人就想出了一个简单粗暴的办法,我直接防拷贝不就好了,也不用想那么多。
在这里插入图片描述
在这里插入图片描述

shared_ptr

但是要是我们真的需要多个指针,管理一块空间那该怎么解决之前的那个问题呢?这时候就用到了shared_ptr。
shared_ptr的思想是用引用计数来解决多个指针指向同一块空间的问题。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
从上面我们可以看到,shared_ptr解决了之前的问题。那么上面实现的shared_ptr还有什么问题?线程安全问题。
在这里插入图片描述
在这里插入图片描述

我们可以看到,当n较小的时候并不会发生线程安全问题,但是当比较大的时候呢?
在这里插入图片描述
我们可以看到当n为10万的时候就发生了线程安全问题。
所以我们应该加锁。

线程安全的解决

在这里插入图片描述
在这里插入图片描述
我们可以看到加锁后,引用计数变的正常,智能指针也正常析构。这时大家肯就会有问题,为什么数据++的不正确?那么shared_ptr还是线程安全的吗?算。
在这里插入图片描述

循环引用

那么现在的shared_ptr就完整了吗?它还有没有什么问题?每次就是循环引用。
在这里插入图片描述
在这里插入图片描述
==我们可以看到最终对象没有被销毁。==那么没有循环引用呢?
在这里插入图片描述
==我们可以看到,没有循环引用时,对象被正常销毁。==那么该怎么解决这个问题呢?这时就用到了weak_ptr。

weak_ptr

weak_ptr的思想就是,只使用,不负责管理和释放。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

删除器

删除器需要我们自己写一个仿函数,显示传给智能指针
在这里插入图片描述

在这里插入图片描述
这里实现的是unique_ptr的删除器,shared_ptr的删除器底层实现比较麻烦大家有兴趣可以自己去了解。

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

相关文章:

  • 网站搭建 保定广州专业网站设计定制
  • 建设银行网站用户名忘了怎么办a做片手机免费网站
  • wordpress后天地址小辉seo
  • 一个专门做海鲜的网站有哪些做汽车变速箱的门户网站
  • 门户网站内容维护流程学校建设网站费用申请报告
  • 服装网站项目的设计方案wordpress加悬浮
  • 做网站可以申请个体户么企业网站需要多大空间
  • 平面设计兼职网站营销一体化营销平台
  • 网站建设需要知识万户网络技术有限公司
  • 做网站广告公司联系方式东莞黄页
  • 广州网站搜索排名网站建设的栏目内容
  • 网站报价方案怎么做大型小说网站开发语言
  • 自助建站系统软件网站制作素材代码
  • 网站建设需要哪些设备新东方小吃培训价格表
  • 免费做游戏网站线上营销策略都有哪些
  • 从哪个网站找钢做的微商公司网站建设广州
  • 沈阳高铁站凡科 wordpress
  • 房山重庆网站建设网站怎么样做不违规
  • 做蔬菜配送有什么网站可下载了解常州模板网站建设企业
  • 传奇怎么建设自己的网站xampp里wordpress安装教程
  • 通讯数码网站铜陵公司做网站
  • 电子商务网站建设预算深圳电商公司有哪些
  • 门户网站建设投资免费的推广软件下载
  • 一元云购网站建设模块天津房地产最新消息
  • 网站开发结构文档wordpress快速审批
  • 网站虚拟主机空间1g多吗电商的推广主要是做什么的
  • 徐州做网站芝罘区网
  • 做最好的网站新新中国建设银行北京分行网站
  • 做网站时默认字体是微软雅黑wordpress元关键词
  • 普陀区建设局网站珠海市网站设计公司