第 7 章━━动态内存分配课件.ppt

第 7 章━━动态内存分配课件.ppt

ID:56947614

大小:153.50 KB

页数:31页

时间:2020-07-21

第 7 章━━动态内存分配课件.ppt_第1页
第 7 章━━动态内存分配课件.ppt_第2页
第 7 章━━动态内存分配课件.ppt_第3页
第 7 章━━动态内存分配课件.ppt_第4页
第 7 章━━动态内存分配课件.ppt_第5页
资源描述:

《第 7 章━━动态内存分配课件.ppt》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、C++程序设计第7章(1)━━动态内存分配1主要内容C++的四个内存区域动态存储分配堆内存new与delete运算符动态存储分配的几点说明使用new和delete的几点说明动态创建对象对象的浅拷贝、浅赋值对象的深拷贝、深赋值顺序表类模板的定义2C++的四个内存区域C++的四个内存区域:①代码区━━存放程序代码。②静态数据区━━存放全局变量或对象、static局部变量或对象。全局变量或对象在程序开始运行时在该区分配;static局部变量或对象在程序运行过程中第一次进入其作用域时在该区分配。该区的变量或对象直到程序运行结束才被释放。③局部数据区(栈区)

2、━━存放auto局部变量或对象。auto局部变量或对象在程序运行到其作用域时在栈区分配,但怎样分配在编译时就已经确定。auto局部变量或对象在离开其作用域时即被释放。④动态存储区(自由存储区、堆区)━━存放程序运行过程中由new运算符动态创建的变量或对象。动态创建的变量或对象在编译时无法为其预定存储空间,系统根据运行时的具体要求在该区分配。该区的变量或对象需要使用delete运算符才能将其释放。3动态存储分配静态存储分配:通常程序中定义的变量或对象,编译器在编译时就可根据该变量或对象的类型知道其所需内存空间的大小,即怎样分配在编译时就已经能够确定,

3、从而在适当的时候为它们分配确定的内存空间,这种内存分配称为静态存储分配。动态存储分配:有些变量或对象只有在程序运行过程中才能确定其大小,这样编译器在编译时就无法为它们预定内存空间,只能在程序运行过程中,系统根据运行时的具体要求进行内存分配,称为动态存储分配。动态存储分配是在自由存储区(堆区)中进行。4堆内存关于堆内存:堆区是由操作系统直接管理的内存区域,它是“公共的区域”,而且“面积”比较大,它的“生命周期”也不是由编译系统控制的,而是由编程的人控制的。在许多的应用中,堆内存的使用都是必不可少的。必须通过指针,才可以使用堆内存。堆内存的分配与释放:

4、在程序运行过程中,遇到一个需要动态分配的变量或对象时,必须向系统申请取得堆内存中的一块所需大小的内存空间,用于存放该变量或对象。当不再使用该变量或对象时,必须结束它的生命期,需要显式释放其所占用的内存空间。C++中,取得和释放堆内存中的空间,分别通过new和delete运算符来完成。new用来动态分配内存空间,delete用来将动态分配得到的内存空间归还给系统(释放)。5new与delete运算符new运算符━━动态申请堆空间格式1:指针变量=new类型名;格式2:指针变量=new类型名(初始值);功能:动态创建一个指定类型的变量或对象。若创建成功

5、(堆空间申请成功),new运算返回新分配堆空间的首地址;若创建失败(堆空间申请失败),new运算返回0或NULL(空指针)。delete运算符━━动态释放堆空间格式:delete指针;功能:释放由new运算动态创建的变量或对象。指针的值必须是new运算所分配堆空间的首地址,即new运算的返回值。6new与delete运算符new运算符━━动态创建一维数组格式:指针变量=new类型名[下标表达式];功能:动态创建一个指定类型的一维数组,数组元素的个数为下标表达式的值。若创建成功(堆空间申请成功),new运算返回新分配一维数组空间的首地址;若创建失败(

6、堆空间申请失败),new运算返回0或NULL(空指针)。注意:动态为数组分配堆空间时,不能同时进行初始化。delete运算符━━动态释放一维数组格式:delete[]指针;功能:释放由new运算动态创建的一维数组。指针的值必须是new运算所分配一维数组空间的首地址,且前面必须加上一对方括号“[]”。注意:若delete中的方括号“[]”不写,只是释放一维数组中一个元素的空间。7【例】(动态创建变量)#includevoidmain(){int*p=newint(100);cout<<*p<

7、<*p<voidmain(){int*p=newint[6];cout<<“请输入六个整数:”;for(inti=0;i<6;i++)cin>>p[i];for(i=0;i<6;i++)cout<<*(p+i)<<‘t’;cout<

8、式:指针变量=new类型名[下标表达式1][下标表达式2];功能:动态创建一个指定类型的二维数组,数组元素的个数为各维下标

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。