读书人

多维动态数组怎么释放

发布时间: 2012-03-19 22:03:05 作者: rapoo

多维动态数组如何释放?
请看下面这段代码:
double*** Kernel = new double** [nNumX];
int i, j, k;
for(i=0; i <nNumX; i++)
{
Kernel[i] = new double* [nNumY];
}
for(i=0; i <nNumX; i++)
{
for(j=0; j <nNumY; j++)
{
Kernel[i][j] = new double [nNumZ];
}
}
请问,像这样一个多维动态数组,如何才能正确地释放掉?

[解决办法]
int i, j, k;
for(i=0; i <nNumX; i++)
{
for(j=0; j <nNumY; j++)
{
delete [] Kernel[i][j];
}
}
for(i=0; i <nNumX; i++)
{
delete [] Kernel[i];
}
delete [] Kernel;
[解决办法]
每个new与delete都对应
[解决办法]
int i, j;
for(i=0; i <nNumX; i++)
{
for(j=0; j <nNumY; j++)
delete [] Kernel[i][j];
delete [] Kernel[i];
}
delete [] Kernel;

[解决办法]
以相同的for循环用相反的顺序,delete []
[解决办法]
反其道而行之!!如 太平洋 的回答
[解决办法]
从最后一维开始用delete []释放
[解决办法]
怎么申请的就怎么释放
[解决办法]
与申请内存的步骤相反,

读书人网 >C++

热点推荐