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

东莞网站建设方案报价东莞南城做网站

东莞网站建设方案报价,东莞南城做网站,大连网站建设外贸,服装电子商务网站版式设计我们今天来学习一下内存管理: 1. 内存分布: 我们先来看一下我们下面的图片: 这个就是我们的内存,我们的内存分为栈区,堆区,静态区,常量区; 我们的函数栈帧开辟消耗的内存就是我们…

我们今天来学习一下内存管理:

1. 内存分布:

我们先来看一下我们下面的图片:

这个就是我们的内存,我们的内存分为栈区,堆区,静态区,常量区;

我们的函数栈帧开辟消耗的内存就是我们的栈区的内存,然后我们的堆区,我们的堆区存放的是我们的动态开辟的内存空间,我们的静态区域存放的是我们的静态变量和全局变量,我们的static修饰的静态的变量,(我们的全局变量也是存放到我们的静态区的)。然后我们的常量区,我们的常量区里面可以存储我们的常量字符串,还有我们不可修改的常量。

1. 栈又叫堆栈--非静态局部变量/函数参数/返回值等等,栈是向下增长的。

(我们看我们这里说的是非静态的局部变量,如果是全局变量的话就不是我们的栈区了,全局变量就是我们的静态区)。

2. 内存映射段是高效的I/O映射方式,用于装载一个共享的动态内存库。用户可使用系统接口 创建共享共享内存,做进程间通信。(Linux课程如果没学到这块,现在只需要了解一下)

3. 堆用于程序运行时动态内存分配,堆是可以上增长的。

4. 数据段--存储全局数据和静态数据。(静态区);

5. 代码段--可执行的代码/只读常量;(常量区);

2. C语言的动态内存管理方式:

我们先来看一下我们之前C语言的内存管理:

我们看这个代码,我们calloc开辟一段内存空间,我们的calloc函数有两个参数,第一个参数是需要分配的元素的数量,第二个参数是我们的每个元素的大小(单位是字节);我们的calloc函数还会把我们申请到的内存进行初始化,全部初始化为0;

我们的realloc函数的参数,第一个是我们要进行扩容的对象的指针,第二个参数是扩容后我们的数组的大小。(单位是字节);

我们看我们图片里面的代码,我们申请完内存以后我们的p2指针指向我们的这个块内存。

然后我们再对我们的这个内存进行扩展,我们使用realloc函数,这时候扩完后的内存的指针为p3,那我们我们使用完后我们需要free p2吗?,,不需要的。

我们的realloc扩容分为两种,一种是原地的进行扩容,还有一种是异地的扩容,我们看我们的原地扩容,我们的原地扩容是在我们的原本的内存的后面是有满足我们要求的内存的大小的,这时候我们就直接扩容,扩容后我们的p3指向我们的这块内存,但是我们的p2也是指向我们的这块内存的,这时候两个指针指向同一块内存区域,我们只要把他释放一次就够了,至于我们的指针,我们出了函数以后,我们的指针存在于栈区的,他就被销毁了。

对于我们的异地扩容,我们的编译器在看我们的原本的内存的后面没有足够的内存的时候,这时候我们就在异地开辟一段内存,这时候我们就把我们原本的数据拷贝过来,然后把原来的数据销毁。

所以我们上面的代码,我们就不需要free(p2)了;

3. C++内存管理方式:

那我们的new,delete和我们的malloc,free的区别是什么呢?

对于我们的自定义类型:

对于我们的内置类型,我们的两种方式是一样的作用,对于我们的自定义类类型,我们的new还会调用我们的构造函数,对于delect还会调用我们的析构函数。

4. operator new 和 operator delete:

我们这里讲两个函数,我们的new操作符的底层是通过调用我们的函数operator new来实现,然后我们的操作符delect操作符是通过我们的底层operator delete来实现的。

但是我们的函数operator new的底层又是我们的malloc函数,我们又是靠malloc函数来进行实现,但是我们的这里,我们内存开辟失败的时候,我们会抛出以一个异常,这就是我们的operator函数;我们的operator delete函数的底层又是我们的free函数。

5. new和delete的实现原理:

6. malloc/free和new/delete的区别:

我们来看一下我们的malloc/free和我们的new/delete:

我们的malloc函数申请的空间不会初始化,但是我们的new申请的空间会初始化;

我们的new = operator  new + 构造函数; operator new = malloc ,但是不同的是我们的malloc函数开辟内存空间失败的时候会返回NULL,但是我们的operator new会返回异常;

delete = operator  delete + 析构函数;operator delete = free。


文章转载自:

http://MTYIt9v5.wxLzr.cn
http://ANVMySv5.wxLzr.cn
http://dUZvzaRj.wxLzr.cn
http://Am1Xe4F3.wxLzr.cn
http://RwEX9Lxk.wxLzr.cn
http://TkcHiQai.wxLzr.cn
http://ZPzDbUAy.wxLzr.cn
http://XUXz1FqB.wxLzr.cn
http://lCwizAL8.wxLzr.cn
http://aU8GLUiU.wxLzr.cn
http://IEGYGhEW.wxLzr.cn
http://YvDmcBKQ.wxLzr.cn
http://w5IvmsP2.wxLzr.cn
http://lEhbcO4H.wxLzr.cn
http://mLb0QbAq.wxLzr.cn
http://3xaOtUlh.wxLzr.cn
http://iEK33r4J.wxLzr.cn
http://nwvumyJS.wxLzr.cn
http://0IQ8NRPM.wxLzr.cn
http://7UJAxklt.wxLzr.cn
http://68btyFTW.wxLzr.cn
http://N4SPD2IQ.wxLzr.cn
http://qT6b26H2.wxLzr.cn
http://9Cv6VUxD.wxLzr.cn
http://OlqVUaXR.wxLzr.cn
http://bZW5eY3V.wxLzr.cn
http://YO9IhuTi.wxLzr.cn
http://n3zlldv0.wxLzr.cn
http://kJ2J5Yvr.wxLzr.cn
http://MrE0BOc5.wxLzr.cn
http://www.dtcms.com/wzjs/668535.html

相关文章:

  • 龙岩市城乡建设局网站进不去网站建设课程感想
  • 文交所网站建设方案邯郸网站设计费用
  • 为什么建设网站要年年交钱wordpress多站版
  • 找图片素材网站wordpress 友情链接小工具
  • 网络项目网买网站做seo
  • 照片做视频模板下载网站免费建网站讨论
  • 网站集约化建设流程网站业务员怎么给客户做方案
  • 网站首页界面设计网站导航条做多高
  • 大兴网站制作浙江建设继续教育网站
  • 效果图网站都有哪些?天津 网站优化
  • 石家庄网站建设方案咨询做的好的音乐网站的特点
  • 做网站树立品牌形象百度seo关键词排名优化工具
  • 天津企业网站建设公司jsp网站服务器如何做防护
  • 只做美食类目产品的网站设计本3d模型下载
  • 汉服网页设计作品seo引擎搜索网站
  • 无锡企业网站制作服务网站设计案例
  • 网站及新媒体帐号内容建设腾讯云建wordpress
  • 数字货币众筹网站开发广州网站推广建设
  • 备案期间网站能打开吗网页微信聊天电脑有记录吗
  • 管理网站建设哪里好wordpress最详细的教程视频教程
  • 顺德 网站设计国外网站国内备案
  • 河南省建设厅证件证件查询网站设计师网站哪个好
  • 西安企业网站建设公司html5网站搭建
  • 温州市永嘉上塘建设局网站茅台酒国内营销网络
  • 怎样查网站的注册地点废旧回收做哪个网站好
  • 网站创建公司哪家好网站建设报什么专业
  • iis7 无法添加网站陕西省建设厅官网查询
  • 怎样入门网站开发如何注册企业
  • 建网站前期设计用那软件零基础学建站
  • 长沙建站找有为太极环境遵wap企业网站源码