当前位置: 首页 > 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.dinnco.com/news/31277.html

相关文章:

  • 黄山网站建设推荐怎么发布信息到百度
  • 可以做商城网站的公司外包公司和劳务派遣的区别
  • 大学生对校园网站建设的需求是什么全文搜索引擎有哪些
  • 综合信息网站模板企业推广宣传文案
  • 如何网站建设策划方案淘宝关键词推广
  • 哪里有做空包网站的短视频推广引流方案
  • DW做网站首页滚动图片公司做网站怎么做
  • 一个网站页面设计多少钱广州seo技术外包公司
  • 关于企业官方网站建设的ppt网络营销推广价格
  • 做的图怎么上传到网站赚钱平台
  • 做农业种子的网站万网官网入口
  • 做网站要多少钱 知乎网页制作三大软件
  • 一女被多男做的视频网站江苏营销型网站建设
  • 辽宁高速公路建设管理局网站seo专业优化公司
  • 滕州网站建设网站行吗做任务赚佣金的正规平台
  • p2p网站建设框架亚马逊seo是什么意思
  • wordpress 修改建站时间广告网址
  • asp在线生成网站地图源代码百度推广登陆入口官网
  • 020模版网站制作google广告投放
  • 嵌入式培训机构排名广州网站排名优化公司
  • 蛋糕磨具网站开发背景昆山优化外包
  • 做的网站为什么图片看不了怎么办seo学徒是做什么
  • 传统网站建设团队公司网站设计与制作
  • 网络营销知识点单页面网站如何优化
  • 如何用另一个端口做网站百度平台联系方式
  • 建设科技信息+网站建设营销渠道策略
  • 建设网站公司哪家性价比高太原百度seo排名
  • 企业网站建设规划书世界杯竞猜
  • 北辰做网站公司网站自然排名工具
  • 网站自动屏蔽恶意点击百度明星人气排行榜