0
我有个问题如下:复制动态分配的2D阵列
我声明了两个指针到指针双型变量**matrix1
和**matrix2
和由操作者new
分配他们成为2D阵列。 首先我用for循环使matrix1
指向称为element
的双类数据,然后我复制matrix1
到matrix2
,这意味着matrix2
也指向element
。然后问题出现了:我使用delete
运营商复制后终止matrix1
,但是然后值matrix2
指向变得非常奇怪。我认为这是因为在删除matrix1
之后,element
终止,所以我认为其中一个解决办法是让matrix2
指向其他地址,其值与元素相同。但我不知道如何做到这一点(删除matrix1
后复制元素到新的动态记忆并不会消失),有人可以帮助我吗?谢谢。
void MatCpy(double **InMat, double **OutMat, int NumOfRow, int NumOfCol)
{
for (int j = 0; j < NumOfRow; j++)
{
for (int i = 0; i < NumOfCol; i++)
{
OutMat[j][i] = InMat[j][i];
}
}
}
double **Malloc2D_Dbl(int row, int col)
{
double **data = new double*[row];
for (int i = 0; i < row; i++)
data[i] = new double[col];
return data;
}
void load(char *load_path, double **data, int height, int width) // function for loading
{
int i = 0, j = 0;
char buffer[30];
file_handle = fopen (load_path, "r");
for (int k = 0; k < width*height; k++)
{
fscanf (file_handle, "%s", &buffer);
j = k/width;
i = k % width;
data[j][i] = atof(buffer);
}
fclose (file_handle);
}
对不起我是一个小白....
您可以添加代码呢? – vathsa
添加代码将是有用的。但是,现在我可以想象在浅拷贝中的这件事。即只复制指向数据的指针,而不是数据本身。 – alexolut
对不起,我忘了打印我的代码 – user3275148