c++ 动态内存分配相关总结
下面随笔是关于c++动态内存分配。
动态申请内存操作符 new
- new 类型名T(初始化参数列表)
- 功能:在程序执行期间,申请用于存放T类型对象的内存空间,并依初值列表赋以初值。
- 结果值:成功:T类型的指针,指向新分配的内存;失败:抛出异常。
释放内存操作符delete
- delete 指针p
- 功能:释放指针p所指向的内存。p必须是new操作的返回值。
//例1动态创建对象举例 #includeusingnamespacestd; classPoint{ public: Point():x(0),y(0){ cout<<"DefaultConstructorcalled."< 运行结果: StepOne: DefaultConstructorcalled. Destructorcalled. StepTwo: Constructorcalled. Destructorcalled.分配和释放动态数组
- 分配:new 类型名T [ 数组长度 ]
数组长度可以是任何表达式,在运行时计算
- 释放:delete[] 数组名p
释放指针p所指向的数组。
p必须是用new分配得到的数组首地址。//例2动态创建对象数组举例 #includeusingnamespacestd; classPoint{//类的声明同例6-16,略}; intmain(){ Point*ptr=newPoint[2];//创建对象数组 ptr[0].move(5,10);//通过指针访问数组元素的成员 ptr[1].move(15,20);//通过指针访问数组元素的成员 cout<<"Deleting..."< 运行结果: DefaultConstructorcalled. DefaultConstructorcalled. Deleting... Destructorcalled. Destructorcalled.动态创建多维数组
new 类型名T[第1维长度][第2维长度]…;
如果内存申请成功,new运算返回一个指向新分配内存首地址的指针。
例如:
char(*fp)[3];
fp=newchar[2][3];
//例3动态创建多维数组 #includeusingnamespacestd; intmain(){ int(*cp)[9][8]=newint[7][9][8]; for(inti=0;i<7;i++) for(intj=0;j<9;j++) for(intk=0;k<8;k++) *(*(*(cp+i)+j)+k)=(i*100+j*10+k); for(inti=0;i<7;i++){ for(intj=0;j<9;j++){ for(intk=0;k<8;k++) cout< 以上就是c++动态内存分配相关总结的详细内容,更多关于c++动态内存分配的资料请关注毛票票其它相关文章!
声明:本文内容来源于网络,版权归原作者所有,内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:czq8825#qq.com(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。