您的位置:首页 > 其它

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

2015-05-07 21:21 330 查看
当我们对需要分配的空间不确定,分配过大可能造成内存浪费,过小出现越界。这时我们就要用到动态内存分配。即在程序运程过程中根据实际情况动态分配适量内存,使用完毕后释放。动态分配时申请和释放的内存单元叫堆对象。
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为指针(指向要释放的内存块)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐