复制动态分配的2D阵列

时间:2014-02-05 13:29:11

标签: c++ arrays

我有一个问题如下:

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

matrix1

对不起我是个菜鸟....

1 个答案:

答案 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));
   }
}