最近在做一个项目,过程中new了一个二维数组来保存中间变量。因为这些变量用完后就没有用了再加上数组规模有点大,就想把它删除释放空间。
double(*p1)[3 * length] = new double[number][3 * length];
然而在删除数组过程中遇到了一些麻烦,这是原本所用的代码:
for (int i = 0; i < 3 * length; i++)
{
delete [] p1[i];
}
delete [] p1;
结果是代码运行到这里是总是出错。
经过检查,发现这段代码在i=0是能够运行,但指针p1指向的空间会全部没有了,之后再i=1时程序就会报错。
之后将代码修改成下面这样就能正确运行了。
// for (int i = 0; i < 3 * length; i++)
// {
// delete [] p1[i];
// }
delete [] p1;
然而查阅了网上的众多资料,这个是一维数组的删除方法,二维数组的删除方法就是出错的那段。难道我new的实际上是一个一维数组?但是我按二维数组来使用并没有出错。奇怪,先记录下来,等我水平再提高之后再探究一下。