生活资讯
【C++】内存管理
2024-12-14 09:22  浏览:106

说明:

  1. 栈又叫堆栈–非静态局部变量/函数参数/返回值等等,栈是向下增长的。
  2. 内存映射段是高效的I/O映射方式,用于装载一个共享的动态内存库。用户可使用系统接口创建共享共享内存,做进程间通信。(Linux课程如果没学到这块,现在只需要了解一下
  3. 堆用于程序运行时动态内存分配,堆是可以上增长的。
  4. 数据段–存储全局数据和静态数据。
  5. 代码段–可执行的代码/只读常量。

从上面这个我们可以看出,我们对内存的操作绝大部分是在堆区进行的,那么对于C语言的内存管理函数malloc . calloc , realloc 是否还记得

 

malloc函数的使用方法
calloc函数的使用方法
realloc函数的使用方法

因为C语言和C++可以兼容,所以C语言的方式在C++中依然可以使用,但是有时候会很麻烦,所以C++提出了自己的内存管理方式通过 new 和 delete 进行动态内存管理

 

要注意new和delete要匹配使用
new —— delete
new[ ] —— delete[ ]

当然若要申请二维数组,和C语言一样麻烦,分为数组指针和指针数组两种

 
 
 

这里最大的区别是对于自定义类型,new会调用自定义类型的构造函数,delete会调用自定义类型的析构函数

 

从上面我们可以看到一些属性的面孔,malloc,free这是C语言开辟和销毁空间的方式

 
 
 
 

如果是申请内置类型的空间,new/delete 和 malloc/free基本相同
不同的地方在
new/delete是申请单个空间,new[ ]/delete[ ]是申请连续空间
new申请失败会抛异常,malloc申请失败会返回NULL

<1>new的原理
1、调用operator new申请空间
2、调用构造函数,对申请的空间进行构造

<2>delete原理
1、在空间中调用析构函数,将对象中的空间进行清理
2、调用operator delete 函数释放对象空间

<3>new T[N] 的原理
1、调用operator new[ ]函数,在函数中调用N次operator new函数完成对对象空间的申请
2、在申请的空间上N次调用构造函数

<4>delete[ ]的原理
1、在释放空间上调用N次析构函数
2、调用operator delete[ ]函数,在函数中调用N次operator delete函数完成对空间的释放

 
 
 
 

定位new表达式是在已分配的原始内存空间中调用构造函数初始化一个对象

new (place_address) type
new (place_address) type (initializer_list)
place_address 是一个指针
initializer_list 是类型的初始化列表

定位new表达式一般和内存池配合使用,因为内存池中数据为初始化,所以需要通过new的定位表达式进行显示构造函数初始化

    以上就是本篇文章【【C++】内存管理】的全部内容了,欢迎阅览 ! 文章地址:http://sjzytwl.xhstdz.com/xwnews/347.html 
     栏目首页      相关文章      动态      同类文章      热门文章      网站地图      返回首页 物流园资讯移动站 http://sjzytwl.xhstdz.com/mobile/ , 查看更多   
最新文章
自愿连锁经营业1040到底怎么回事手机卡怎么拿出来「自愿连锁经营业1040到底怎么回事」
​​资本运作行业分为两派,南派69800体系,就是连锁经营,北派就是中绿资本运作。南派也好,北派也罢,那很多人问?为什么国家
手机壳硅胶脏了怎么清洗硅胶手机壳脏了怎么清洗「手机壳硅胶脏了怎么清洗」
苏轼是眉州眉山(今四川省眉山市)人,祖籍河北栾城。苏轼(1037年1月8日—1101年8月24日),字子瞻,一字和仲,号铁冠道人、东
苹果手表水凝膜和钢化膜哪个好手机水凝膜和钢化膜哪个好「苹果手表水凝膜和钢化膜哪个好」
“盾牌”是古代作战时一种手持格挡,用以掩蔽身体,抵御敌方兵刃、矢石等兵器进攻的防御性兵械,呈长方形或圆形,盾的中央向外凸
新手机充电怎么充?怎样充电更安全?新手机怎么才算激活「新手机充电怎么充?怎样充电更安全?」
  很多朋友对于新买的手机怎么充电缺乏了解,不知道新买的手机怎么充电?下面小编就为大详细介绍下新手机充电方法及智能手机充
谷歌模块化智能手机2015年上市 仅售50美元模块化手机「谷歌模块化智能手机2015年上市 仅售50美元」
【环球科技综合报道】据国外媒体3月3日报道,谷歌的模块化手机Project Ara或将于2015年初与大众见面,定价50美元。它使顾客可以
主题库手机版手机主题下载「主题库手机版」
主题库手机版是移动主题软件,包含多种类型的主题资源,您可以在线选择自己喜欢的资源并使用。所以我们每天都能感觉到好心情。打
移动数据开关手机英雄连手机版「移动数据开关手机」
下载移动数据开关手机到手机上面的方法有很多。 安卓系统的手机可以在豌豆荚或者PP助手等手机助手里面一键下载安装!也可以通过
【Root教程】华为Root不求人,自己用工具箱就能搞定腾讯手机管家root「【Root教程】华为Root不求人,自己用工具箱就能搞定」
emui8-10root教程先按视频里面那样 安装驱动 打开usb调试 让工具箱能识别到设备型号 然后输入1进行root这里输入1 修补分区选择de
清末有一尼姑在这座金竹庵还俗,老夫少妻生下一儿,曾经就任总统
在阅读之前,麻烦您点击一下“关注”,既方便您进行讨论和分享,又能给您带来不一样的参与感,创作不易,感谢您的支持!     
双核裸眼3D:LG Optimus 3D MAX裸眼3d手机「双核裸眼3D:LG Optimus 3D MAX」
双核裸眼3D:LG Optimus 3D MAX LG Optimus 3D MAX是去年机型裸眼3DP920的升级版本,它的数字型号为P720。该机也拥有着的IPS大屏