我有一个问题如下:
我声明了两个指针到指针的双变量**matrix1
和**matrix2
,并由new
运算符分配它们以成为2D数组。
首先,我使用for循环使matrix1
指向名为element
的双重类型数据,然后将matrix1
复制到matrix2
,这意味着matrix2
指向{ {1}}也是。然后出现问题:我在复制后使用element
运算符终止delete
,但随后值matrix1
变得非常奇怪。我认为这是因为在删除matrix2
后,matrix1
终止,所以我认为解决方法之一就是让element
指向其他地址,其值与元素相同。但我不知道如何做到这一点(复制元素到新的动态记忆,并且在删除matrix2
之后不会以有效的方式消失),有人可以帮助我吗?谢谢。
matrix1
对不起我是个菜鸟....
答案 0 :(得分:0)
比复制单个元素更有效的方法是使用memcpy
,如下所示:
void MatCpy(double **InMat, double **OutMat, int NumOfRow, int NumOfCol) {
for(int j=0; j<NumOfRow; j++) {
memcpy(OutMat[j], InMat[j], NumOfCol*sizeof(double));
}
}