第十四章 new操作符及StringParser类.pptVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
软件学院软件基础教研室 C++简明教程 第十三章 new操作符和StringParser类 内存的动态分配和销毁 如何使用new和delete 1、内存的动态分配和销毁 1.1 问题的提出 类array的定义 class array { public: void input(); //输入数组 int getmax(); //获得数组元素的最大值 private: int a[3]; }; 1、内存的动态分配和销毁 1.1 问题的提出 能否由用户指定,可以对任意多个数进行比较,获得最大值? void main() { int size,int max; cout 输入数组大小:; cin size; array a1(size); a1.input(); max = a1.getmax(); cout 数组最大值: max; } 1、内存的动态分配和销毁 1.2 什么是内存的动态分配和静态分配 内存的动态分配 代码在执行的过程中分配内存空间 内存的静态分配 代码在编译阶段分配内存空间 如: int m, n; Int a[5]; 1、内存的动态分配和销毁 1.3 new操作符 格式 new type [size] 作用 申请分配一块内存空间,该空间可以存放size个元素,每个元素的类型为type 1、内存的动态分配和销毁 1.4 new操作符的使用 int * p = new int [ 5 ];//申请内存,该内存可以 //存放5个int类型的数据 p[0] = 1; // 等价于: *(p+1) = 2; int * q = new array(); q-input();//等价于: (*q).input; 说明:分配的内存地址通常保存到指针变量中 1、内存的动态分配和销毁 1.5 delete操作符 格式 delete [ ] 指针变量 作用 销毁指针变量所指向的内存,这样该内存就可以被其他程序/本程序再次使用了。 1、内存的动态分配和销毁 1.6 delete操作符的使用 int * p = new int [ 5 ]; p[0] = 1; delete [ ] p; //销毁内存; Array * q = new Array(); delete q; //销毁内存; 1、内存的动态分配和销毁 1.7 内存分配和销毁的陷阱 new申请内存可能失败 int * p = new int [ 5 ]; if ( p == NULL) //在使用内存前必须判断是否申请成功 { return; } p[0] = 1; 1、内存的动态分配和销毁 1.7 内存分配和销毁的陷阱 只有new但没有delete会造成内存泄露 void main() { int * p = new int [ 5 ]; p[0] = 1; } //int[5]内存泄露,该内存永远不能被再利用了。 1、内存的动态分配和销毁 1.8 内存动态分配和静态分配的区别 内存分配时机不同 静态分配:程序在编译阶段分配内存 动态阶段:程序在运行阶段分配内存 1、内存的动态分配和销毁 1.8 内存动态分配和静态分配的区别 分配地点不同 静态分配:内存在栈中分配 动态分配:内存在堆中分配 1、内存的动态分配和销毁 1.8 内存动态分配和静态分配的区别 内存分配和回收的机制不同 静态分配:内存由计算机自动分配和回收 动态分配:内存由开发人员分配和回收(如果只有 分配没有回收,则会内存泄露) 2、应用举例-array类 2.1 问题的提出 能否由用户指定,可以对任意多个数进行比较,获得最大值? void main() { int size,int max; cout 输入数组大小:; cin size; array a1(size); a1.input(); max = a1.getmax(); cout 数组最大值: max; } 2、应用举例-array类 2.2 问题的解决之道 class array { public: array(int size); void input(); int getmax(); ~array(); private: int * a; //动态分配内存的地址 int size; //数组的大小 }; 2、应用举例-array类 2.2 问题的解决之道 array

文档评论(0)

xiaofei2001129 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档