三十二、数组、指针和字符串:动态内存分配和释放
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类型指针。失败返回NULL2、动态内存释放
void free(void *menblock) //menblock为指针(指向要释放的内存块)
相关文章推荐
- C++编程入门系列之三十二(数组、指针和字符串:动态内存分配和释放)
- 鸡啄米:C++编程入门系列之三十二(数组、指针和字符串:动态内存分配和释放)
- 数组、指针和字符串:动态内存分配和释放
- c语言中内存的动态分配与释放(多维动态数组构建)
- C语言学习8:malloc返回的void*类型指针不可以做更改,free双重释放,二维数组的初始化和打印,a和a[0]和a[0][0]的区别,数组指针(*p)[3],指针数组*a[10],动态内存分配版约瑟夫环,动态分配版去空格和逗号处理,二级指针与二维数组互用
- c语言中内存的动态分配与释放(多维动态数组构建)
- 结构体指针数组 内存分配 释放
- c语言中内存的动态分配与释放(多维动态数组构建)
- C语言中动态分配数组指针的释放问题
- c语言中内存的动态分配与释放(多维动态数组构建)
- C语言中动态分配数组指针后如何释放
- 二维指针、数组指针和指针数组存储空间的动态分配和释放
- 指针数组与数组指针 指针函数与函数指针,内存动态分配
- 结构体指针数组 内存分配 释放
- 【转】c语言中内存的动态分配与释放(多维动态数组构建)
- 用指针正确的操纵动态数组与正确用delete释放内存的方法
- C语言中内存的动态分配与释放(多维动态数组构建)
- c语言中内存的动态分配与释放(多维动态数组构建)
- 动态分配多维数组和释放其内存
- c语言中内存的动态分配与释放(多维动态数组构建)