C语言的内存分配详解.ppt

  1. 1、本文档共35页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多

动态内存分配堆内存分配堆内存的分配与释放下面是关于new操作的说明1、new运算符返回的是一个指向所分配类型变量(对象)的指针。对所创建的变量或对象,都是通过该指针来间接操作的,而动态创建的对象本身没有名字。

2、一般定义变量和对象时要用标识符命名,称命名对象,而动态的称无名对象(请注意与栈区中的临时对象的区别,两者完全不同:生命期不同,操作方法不同,临时变量对程序员是透明的)。3、堆区是不会在分配时做自动初始化的(包括清零),所以必须用初始化式(initializer)来显式初始化。new表达式的操作序列如下:从堆区分配对象,然后用括号中的值初始化该对象。

动态数组举例(1)(本小题10分)读懂如下程序:#includeiostream.h#includemath.hdoubleTriangleArea(){inti;doubledTArea;7double*pds=newdouble[5];8if(!pds)9{coutErrormemoryallocation!endl;10return-1;11}pds[0]=0;for(i=1;i4;i++){coutthesideis:;cinpds[i];pds[0]+=pds[i]/2;}pds[4]=pds[0];for(i=1;i4;i++)pds[0]*=(pds[4]-pds[i]);dTArea=sqrt(pds[0]);23delete[]pds;returndTArea;}指针数组和数组指针指针类型:(1)int*ptr;//指针所指向的类型是int

(2)char*ptr;//指针所指向的的类型是char

(3)int**ptr;//指针所指向的的类型是int*(也就是一个int*型指针)

(4)int(*ptr)[3];//指针所指向的的类型是int()[3]//二维指针的声明指针数组一个数组里存放的都是同一个类型的指针,通常我们把他叫做指针数组。比如int*a[2];它里边放了2个int*型变量.int*a[2];

a[0]=newint[3];

a[1]=newint[3];

deletea[0];

deletea[1];

注意这里是一个数组,不能delete[];

数组指针一个指向一维或者多维数组的指针.int*b=newint[10];指向一维数组的指针b;

注意,这个时候释放空间一定要delete[],否则会造成内存泄露,b就成为了空悬指针int(*b2)[10]=newint[10][10];注意,这里的b2指向了一个二维int型数组的首地址.

注意:在这里,b2等效于二维数组名,但没有指出其边界,即最高维的元素数量,但是它的最低维数的元素数量必须要指定!就像指向字符的指针,即等效一个字符串,不要把指向字符的指针说成指向字符串的指针。int(*b3)[30][20];?//三级指针――指向三维数组的指针;

int(*b2)[20];??//二级指针;――指向二维数组的指针;

b3=newint[1][20][30];

b2=newint[30][20];

删除这两个动态数组可用下式:

delete[]b3;?//删除(释放)三维数组;

delete[]b2;?//删除(释放)二维数组;7.1.2堆对象与构造函数正因为构造函数可以有参数,所以new后面类(class)类型也可以有参数。这些参数即构造函数的参数。但对创建数组,则无参数,并只调用缺省的构造函数。见下例类说明:7.1.3浅拷贝与深拷贝缺省拷贝构造函数:用一个对象的内容初始化另一个同类对象,也称为缺省的按成员拷贝,不是对整个类对象的按位拷贝。这种拷贝称为浅拷贝。classCGoods{char*Name;//不同与charName[21]?intAmount;floatPrice;floatTotal_value;public:CGoods(){Name=newchar[21];}CGoods(CGoodsother){//缺省拷贝构造内容:

文档评论(0)

好文精选 + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档