首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

多维动态数组怎么释放

2012-03-19 
多维动态数组如何释放?请看下面这段代码:double***Kernelnewdouble**[nNumX]inti,j,kfor(i0i nNumX

多维动态数组如何释放?
请看下面这段代码:
        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 []释放
[解决办法]
怎么申请的就怎么释放
[解决办法]
与申请内存的步骤相反,

热点排行