三十二、数组、指针和字符串:动态内存分配和释放

	当我们对需要分配的空间不确定,分配过大可能造成内存浪费,过小出现越界。这时我们就要用到动态内存分配。即在程序运程过程中根据实际情况动态分配适量内存,使用完毕后释放。动态分配时申请和释放的内存单元叫堆对象1、new和delete
语法形式
new  类型名(初值列表)
int *p
p=new int(5); //如果是类对象则调用合适的构造函数
delete p; //释放对象
需要注意的是,new动态分配的内存只能用delete释放一次,如果释放第二次会出现错误

同理可以建立数组
new 类型名[下标表达式];
delete []指针名;  //注意指针名前的[]符号
创建多维数组的形式
int *p=new int[2][3]  //错误
new返回的是一个指向有三个元素的一维型数组的指针。而p是一个指向int型数据的指针。
这就是理解多维数组的方法。如new int[2][3][4]第一个元素就是一个3x4的二维数组。

声明指向多维数组的指针形式、
类型名(*指针名)[下标1][下标2]…
如
int (*p)[3]; //指向的每一行有三个元素
p=new [2][3];
 
2、继承自C的动态内存分配与释放函数
除了new和delete外,C+还继承了C的动态内存管理。
1、动态内存分配函数
void *malloc(size);  size为要分配的字节娄。成功则返回void类型指针。失败返回NULL
2、动态内存释放
void free(void *menblock)  //menblock为指针(指向要释放的内存块)


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值