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