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

中国建设机械教育网官方网站宁波关键词优化平台

中国建设机械教育网官方网站,宁波关键词优化平台,网站做链轮会被惩罚吗,安徽省城乡建设委员会网站众所周知,C五大内存区:全局数据区(静态区)、代码区、栈区、堆区、常量区。 全局数据区(静态区):存放全局变量,静态数据和常量; 代码区:存放所有类成员函数和非成员函数代码,函数体的二进制代码。…

众所周知,C++五大内存区:全局数据区(静态区)、代码区、栈区、堆区、常量区。
全局数据区(静态区):存放全局变量,静态数据和常量;
代码区:存放所有类成员函数和非成员函数代码,函数体的二进制代码。
栈区:存放为运行函数而分配的局部变量、函数参数、返回数据、返回地址等。
堆区:new、malloc、realloc分配的内存块,一般编译器不会释放内存,需要用程序释放,内存泄露通常说的就是堆区。
常量区:存放常量的,不允许修改。

其中,堆区就是动态内存的区域,就是程序员自己分配和释放内存的区域。

1.智能指针

1.1 介绍

头文件:#include<memory>

智能指针是模板。

shared_ptr:共享指针,允许多个指针指向同一个对象

unique_ptr:独占指针,只允许一个指针指向一个对象

weak_ptr:弱引用,指向shared_ptr所管理的对象。

特点:智能指针可以自动释放所指向的对象的内存。

1.2 shared_ptr类

形式:shared_ptr<T> ptrname;

特点:每个shared_ptr都有一个关联的计数器,来记录有多少个智能指针指向这个对象,

我们拷贝一个shared_ptr,计数器会递增,如:

        1.当用一个shared_ptr初始化另一个shared_ptr

        2.当把一个shared_ptr作为参数传递给一个函数

        3.当把一个shared_ptr作为一个函数返回值时  

我们销毁一个shared_ptr,或给一个shared_ptr赋值时,计数器会递减,如:

        1.局部shared_ptr离开一个作用域,会被销毁,则指向这个对象的其它shared_ptr指针的计数器会递减

当计数器为0时(即没有智能指针指向这个对象了),将会调用这个对象的析构函数销毁它,并释放内存。

T:是一个类型,可以是内置类型、容器等等。

操作含义
shared_ptr<T> sp空智能指针,指向类型为T的对象
sp将sp作为条件判断,如果sp指向一个对象,则为true,否则为false
*sp解引用sp,获得它指向的对象
sp->mem等价于(*sp)->mem,调用sp指向对象的成员
sp.get()返回sp中保存的指针。注意:若智能指针释放了其对象,返回的指针所指向的对象也就消失了。

swap(sp1,sp2)

sq.swap(sp2)

交换两个智能指针
make_shared<T> (args)返回一个shared_ptr,指向类型为T的对象。并且使用args对对象进行初始化。这是最安全的分配和使用动态内存的方法
shared_ptr<T> sp (sq)sp是sq的拷贝,此操作会递增sq的计数器。sq中的指针必须能转换为T*
sp=sqsp是sq的拷贝,此操作会递增sq的计数器,递减sp的计数器。
sp.unique()若sp.use_count为1,则为true,否则,则为false
sp.use_count()返回与sp共享对象的智能指针数量。可能会很慢

注意:

        由于在最后一个shared_ptr销毁前,这个对象不会被销毁,所以就需要保证当这个shared_ptr在后面不会再使用的时候就要销毁它。如:一个容器里,存有多个shared_ptr,但是用到后面,我只需要使用其中的一部分shared_ptr,这时候我就要调用容器的erase函数,来将不用的shared_ptr给销毁掉,避免内存浪费。

1.3 unique_ptr类

操作含义
unique_ptr<T> up空智能指针,指向类型为T的对象
up将up作为条件判断,如果sp指向一个对象,则为true,否则为false
*up解引用up,获得它指向的对象
up->mem等价于(*up)->mem,调用up指向对象的成员
up.get()返回up中保存的指针。注意:若智能指针释放了其对象,返回的指针所指向的对象也就消失了。

swap(up1,up2)

up.swap(up2)

交换两个智能指针

2.动态内存

2.1 使用动态内存资源的类

一般在以下情况下,程序要使用动态内存资源:

        1.程序不知道这个类需要分配多少对象。如:容器

        2.程序不知道所需对象的准确类型。

        3.程序需要在多个对象间共享数据。

3.动态内存与智能指针

http://www.mmbaike.com/news/108797.html

相关文章:

  • 企业网站建设网站球队积分排名
  • 做网站要哪些架包谷歌海外推广怎么做
  • 怎么做网站301重定向sem推广是什么意思
  • 绿色建筑信息平台推广优化工具
  • 做脚本网站网络营销的工具和方法有哪些
  • 德州网站优化刷外链网站
  • 最优秀的佛山网站建设沈阳企业网站seo公司
  • 专业的网站建设哪家好今天的新闻 联播最新消息
  • dwcc怎么做网站建站模板哪个好
  • 医保局网站建设中标公告网站设计制作在哪能看
  • 网站做邮箱it培训机构培训费用
  • 无人区电影中加油站司机百度指数数据
  • 莱芜手机网站设计公司知乎软文推广
  • 华为云做网站网络推广有哪些常见的推广方法
  • 坪地网站建设社群营销成功案例
  • 滕州网站搜索引擎优化山东百度推广代理商
  • 南京自助建站软件全网整合营销外包
  • 医院网站制作好吗建站推广
  • 公司怎样建自己网站百度经验手机版官网
  • 西宁网站制作费用是多少钱接外包项目的网站
  • 微信开发者工具官网平台入口重庆seo排名
  • 终身免费网站建设sem是什么岗位
  • 做网站建设公司排名西安百度关键词优化
  • 比较好的公司网站互联网行业都有哪些工作
  • 济南网站制作 泉诺千锋教育的真实性
  • 网站建设公司正规吗推广竞价账户托管
  • 网站中点击链接怎么做整合营销方案怎么写
  • 宁波培训网站建设seo手机关键词排行推广
  • 日照seo整站优化哪家便宜外链在线生成
  • 网站程序调试模式怎么做长沙靠谱的关键词优化