返回信息流这样创建了一个4*5的二位数组:
int (*a)[5];
a=new int[4][5];
然后释放:
for (i=0;i<4;i++)
delete[] a[i];
delete[] a;
编译通过了,但是运行到释放空间的时候程序就停止工作了,怎么回事啊。。。
这是一条镜像帖。来源:北邮人论坛 / cpp / #28054同步于 2009/9/3
该镜像源已超过 30 天没有更新,可能在源站已被删除。
CPP机器人发帖
求助~动态二维数组的释放
bedding
2009/9/3镜像同步3 回复
订阅后,新回复会通过你的通知中心匿名送达。
3 条回复
一个new
两个delete
你觉得对吗?
直接delete[] a; 即可
这样应该也行:
int **a = new int*[5];
for (i=0;i<3;i++)
a[i] = new int[5];
然后释放:
for (i=0;i<3;i++)
delete[] a[i];
delete[] a;
【 在 bedding 的大作中提到: 】
: 这样创建了一个4*5的二位数组:
: int (*a)[5];
: a=new int[4][5];
: ...................
第一个delete那个语句删掉...
【 在 bedding (被子) 的大作中提到: 】
: 这样创建了一个4*5的二位数组:
: int (*a)[5];
: a=new int[4][5];
: ...................
//动态二维数组,例如int[x][y]
int **pMatrix;
pMatrix=new int*[x];
for(int i=0;i++;i<x) pMatrixi]=new int[y];
//删除
for(int i=0;i<x;i++) delete []pMatrix[i];
delete []pMatrix;
lz的写法不算是动态二维数组了,1楼的写法也对