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

东莞网站公司星鑫网站怎么做更新吗

东莞网站公司星鑫,网站怎么做更新吗,深圳网站优化推广,乐享校园网站建设策划书参考资料 :阿秀、代码随想录 智能指针是一个类,用于存储指向动态分配对象的指针,负责自动释放动态分配的对象,防止堆内存泄露。动态分配的资源,交给一个类对象去管理,当类对象声明周期结束时,自…

参考资料 :阿秀、代码随想录

        智能指针是一个类,用于存储指向动态分配对象的指针负责自动释放动态分配的对象防止堆内存泄露。动态分配的资源,交给一个类对象去管理,当类对象声明周期结束时,自动调用析构函数释放资源。

        C++11提供了两种智能指针,两种智能指针的区别在于管理底层指针的方式shared_ptr允许多个指针指向同一个对象;unique_ptr则“独占”所指向的对象。标准库还定义了一个名为weak_ptr的伴随类,是一种弱引用,指向shared_ptr所管理的对象。

一、 shared_ptr

        采⽤引用计数器的方法,允许多个智能指针指向同⼀个对象,每当多⼀个指针指向该对象时,指向该对象的所有智能指针内部的引用计数加1,每当减少⼀个智能指针指向对象时,引用计数会减1,当计数为0的时候会自动的释放动态分配的资源

1. 使用方法

  • 创建智能指针,需要给出指针可以指向的类型
// 创建智能指针
shared_ptr<string> p1;       // 指向string
shared_ptr<list<int>> p2;    // 指向int的list
  •  分配和使用动态内存 make_shared<T>(args)
shared_ptr<string> p3 = make_shared<string>(10,'9');    // 指向一个值为“9999999999”的字符串

2. 线程安全问题

(1)同⼀个shared_ptr被多个线程“读”是安全的;

(2)同⼀个shared_ptr被多个线程“写”是不安全的;

(3)共享引用计数的不同的shared_ptr被多个线程”写“ 是安全的。

二、 unique_ptr

        采用独享所有权语义,⼀个非空的unique_ptr总是拥有它所指向的资源。转移⼀个unique_ptr将会把所有权全部从源指针转移给目标指针,源指针被置空所以unique_ptr不支持普通拷贝和赋值操作,不能用在 STL标准容器中;局部变量的返回值除外(因为编译器知道要返回的对象将要被销毁);如果你拷贝⼀个unique_ptr,那么拷贝结束后,这两个unique_ptr都会指向相同的资源,造成在结束时对同⼀内存指针多次释放而导致程序崩溃。

1. 创建unique_ptr

        定义unique_ptr时,需要将其绑定到一个new返回的指针上,初始化unique_ptr必须采用直接初始化形式。

unique_ptr<string> p1;           
unique_ptr<int> p2(new int(42)); // p2指向一个值为42的int

2. realese/reset

        虽然不能够拷贝或赋值unique_ptr,但是可以通过调用release和reset将指针的所有权从一个(非const)unique_ptr转移给另一个unique;

unique_ptr<string> p2(p1.release());    // release将p1置空unique_ptr<string> p3(new string("Chesnut"));  
// 将所有权从p3转移给p2
p2.reset(p3.release());    // reset释放p2原本指向空间

3. 传递unique_ptr参数和返回unique_ptr

        不能拷贝unique_ptr的规则有一个例外: 可以拷贝或赋值一个将要被销毁的unique_ptr。最常见的例子就是从函数返回一个unique_ptr。

unique_ptr<int> clone(int p){return unique_ptr<int>(new int(p));
}

三、 weak_ptr 弱引用

        引用计数有⼀个问题就是互相引⽤形成环(环形引用),这样两个指针指向的内存都无法释 放,需要使用weak_ptr打破环形引用

        weak_ptr是⼀个弱引用,它是为了配合shared_ptr而引⼊的⼀种智能指针,它指向⼀个由shared_ptr管理的对象而不影响所指对象的生命周期,也就是说,它只引用,不计数。如果⼀块 内存被shared_ptr和weak_ptr同时引⽤,当所有shared_ptr析构了之后,不管还有没有weak_ptr引⽤该内存,内存也会被释放。所以weak_ptr不保证它指向的内存⼀定是有效的在使用之前使⽤函数lock()检查weak_ptr是否为空指针。

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

相关文章:

  • 精品网站建设比较好创造与魔法官方网站一起做喜欢的事
  • 无锡做网站公司费用价格网页模板下载工具
  • 厦门市建设局官方网站wordpress 怎么加页面
  • 网站建设京icp备wordpress幻灯片 设置
  • 网站建设与网页设计实验报告iis建设网站教程
  • 做企业网站的步骤淮北论坛创建文明城市
  • 甘肃省建设厅执业注册中心网站肇庆seo外包服务
  • 安阳网站建设策划河间网站制作公司
  • iis建设的网站无法访问陕西城乡住房建设厅网站
  • 北京漫步云端网站建设企业做网站需要哪些人员
  • 网站建设宽度一般都是多少网站上做百度广告赚钱么
  • 海南哪家公司做网站小程序定制团队
  • 网站建设与网页设计 教材wordpress 访问速度
  • 赵县住房和城乡建设局网站路得威网站谁做的
  • 网站seo优化书籍宁夏公路建设管理局网站
  • 说出网站建设流程网站管理工作一般包括
  • 眉山网站设计桂林餐饮兼职网站建设
  • 沈阳做网站的公司推荐锡林浩特网站建设开发
  • 哈尔滨网站建设托管南京百度seo代理
  • 包头做网站哪家好网络职业有哪些
  • 公司网页网站建设企业免费招聘网站
  • 盗网站后台源码贺州seo
  • 电子商务网站经营性icp儿童编程哪家培训机构好
  • 盘锦化工网站建设模板网站建设制作
  • 公司网站彩页怎么做网站建设一般一年多少费用
  • 网站建设零基础自学视频教程wordpress截取字符串
  • 如何本地搭建网站网站建设宣传方案
  • 洛宁县东宋乡城乡建设局网站网站建设国内外研究进展
  • 南京网站推广营销公司哪家好网站不备案
  • 大宗商品报价平台泉州百度seo公司