关于C++的二维数组的一个问题与解决

最近在做一个项目,过程中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的实际上是一个一维数组?但是我按二维数组来使用并没有出错。奇怪,先记录下来,等我水平再提高之后再探究一下。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值