1 / 5
文档名称:

动态分配内存.doc

格式:doc   大小:82KB   页数:5页
下载后只包含 1 个 DOC 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

动态分配内存.doc

上传人:水中望月 2019/3/24 文件大小:82 KB

下载得到文件列表

动态分配内存.doc

相关文档

文档介绍

文档介绍:三动态内存分配(定义一个指针去指向这个NEW由于没有名所以要用到指针指向它)1(1)new类型名T(初值列表)int*p, p=newint(2)*p(3);(2)申请失败的话返回0或者NULL,if(p==0){//申请空间失败};(3)释放内存操作符deletedelete指针P(P必须是new操作的返回值。)删除的是 P指向的那块内存没有了但是P还在2动态存储分配举例(画图就能解决问题)#include<>structdate{intmonth;intday;intyear;};4动态分配结构体date_point->month=10;(*date_point)。month=10;5动态分配数组((注意删除写法))delete[]c_point;//释放数组6用new创建多维数组:char*fp[3];指针数组一个数祖这个数祖包含3个元素每个元素都是一个指针char(*fp)[3]:一个指针指向一维数组这数组有3个元素都是char类型的(如果是int*p()+1指向下一个(4个字节之后) 而这个+1指向下一行(隔离3个元素)看图就知道了)fp=newchar[2][3];#include<>voidmain(){ int(*cp)[3]; inti,j; cp=newint[2][3]; for(i=0;i<2;i++) for(j=0;j<3;j++) *(*(cp+i)+j)=i*10+j;//通过指针访问数组元素for(i=0;i<2;i++) { for(j=0;j<3;j++) {//将指针cp作为数组名使用,//通过数组名和下标访问数组元素cout<<cp[i][j]<<""; } cout<<endl; }}(一但NEW一个类对象就会调用构造函数) deletePtr1会调用析钩函数 动态创建对象带参数的Ptr1=newPoint(1,2);#include<>classPoint{public:Point(){X=Y=0;cout<<"DefaultConstructorcalled.\n";}Point(intxx,intyy);{X=xx;Y=yy;cout<<"Constructorcalled.\n";}~Point(){cout<<"Destructorcalled.\n";}intGetX(){returnX;}intGetY(){returnY;} voidMove(intx,inty) {X=x;Y=y;}private:intX,Y;};voidmain(){cout<<"StepOne:"<<endl;Point*Ptr1=newPoint;deletePtr1;cout<<"StepTwo:"<<endl;Ptr1=newPoint(1,2);deletePtr1;}运行结果:StepOne:: 动态创建对象数组Point*Ptr=newPoint[2];//创建对象数组调用2次缺省构造函数delete[]Ptr;调用2次析构函数8动态存储分配函数