您的位置:首页 > 其它

释放动态创建的二维数组时出现内存访问异常

2014-12-21 17:54 351 查看
double** arrM = NULL; // 存储i到j组成的多边形的总的弦长总和

arrM = new double*


for(i=0; i<n; i++)

{
arrM[i] = new double
;

// 和i临着的1,2个点的三角分割都是0
arrM[i][i] = 0;
arrM[i][i+1] = 0;
arrM[i][i+2] = 0;

}

红色字体标注具有非法的内存访问权限,最直接的例子是对最后一行数据,不过程序运行到这不会出现错误。

在你释放内存是会出现错误,个人猜测错误原因应该由于你的非法写,导致数组的特殊结束标记被覆盖,所以释放内存时程序不知道到哪结束而出现异常,比如n=4,你释放arrM[2]时,会出现错误,因为arrM[2][4]存在非法写,到时数组的结束标记被擦除,程序不知道到哪是结束的标记。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  释放二维数组