new 二维数组的动态分配和删除
来源:互联网 发布:php 5.3.2.tar.gz下载 编辑:程序博客网 时间:2024/05/16 14:46
本文转自:http://blog.csdn.net/jia_xiaoxin/article/details/3268645
二维数组的动态分配和删除
首先,动态支持数组的分配,必须用 new 来进行创建一段堆内存,其它的存贮区域不允许动态分配的产生。
其次,C++并没有提供真正的动态多维数组语法,想动态分配数组,必须通过一维动态数组组合形成一个类似多维数组的存贮形式,并不像静态分配多维数组,它们的用法虽说有些地方 有相似之处,但不完全相同。
再次,有些网友有一些很BT的分配方式。
例如:
int (*p)[4] = new int[3][4];
解释:可能有些初学者认为这样是可取的,也是利用 new 分配的数组,就可以是动态的,那你的想法就错了,它的分配必须得有最外层 const的支持—
int x = 3, y = 4;
int (*p)[y] = new int[x][y];//error,y必须是const。
所以这种方式不能达到真正的动态分配二维数组的目的,只能相当于半自动化的一个分配方式。
那么如果依靠下面的这种方式是正确的:
例:
int x = 3, y = 4;
int *p = new int*[x];//创建一个动态 int* 型数组
for(int i = 0; i < y; ++i)
p[i] = new int[x]; //再创建一个动态 int 型数组
{
delete p[i];//由里至外,进行释放内存。
p[i] = NULL;//不要忘记,释放空间后p[i]不会自动指向NULL值,还将守在原处,只是释放内存而已,仅此而已。
}
delete []p;
p = NULL;
它就是依靠一维数组的组合来完成,这样创建的动态数组就是一个全自动的个分配方式。
例
void * buf = malloc(x * y * sizeof (int) ); //这也是一个好方法,简单方便,但它是C里面的分配方式。
free(buf);//释放内存简单方便.
- new 二维数组的动态分配和删除
- 二维数组的动态分配和删除
- 二维数组的动态分配和删除(转载)
- 二维数组的动态分配和删除
- 二维数组的动态分配(new)、初始化(memset)和撤销(delete)
- 二维数组的动态分配(new)、初始化(…
- 二维数组的动态分配(new)、初始化(…
- 动态分配二维数组以及new的用法
- 二维数组的动态分配和删除(VC++ 编译成功)
- 动态分配、删除二维数组
- C++ 二维数组/多维数组的动态分配(new)和释放(delete)
- new delete 实现动态分配和释放二维数组
- C++ 关于二维数组的动态分配和释放——方法一(new)
- C++数组(一维、二维、三维)的动态分配new、初始化memset和释放delete
- 二维数组的动态分配和释放
- 二维数组的动态分配
- 二维数组的动态分配
- 二维数组的动态分配
- CTAERR_INVALID_BOARD 错误 mstsc -admin
- SQL Server 2005&2008备份与恢复
- windows 查看某个端口被哪一个进程占用。
- Openmpi使用Infiniband中” only allow registering part of your physical memory“问题
- android tabhost去掉底部白线
- new 二维数组的动态分配和删除
- PeekMessage函数用法
- 深入Java虚拟机
- 25岁,上帝找你谈一次灵魂。——送给女孩,也送给男孩
- unicode 与 utf 转换 java(转)
- Can't create handler inside thread that has not called Looper.prepare()解决办法
- 字符编码总结(UTF-8,UNICODE)
- /data 权限挂载为读写
- 【Linux基础】程序与进程