我試圖將我的字符串轉換爲雙精度動態數組。我的字符串的每個空格表示一列,每個「;」代表了一個新的行。當此代碼運行時,它僅適用於* F [0] [col]。當它到達* F [1] [col]時,它給我提示錯誤「CCode.exe中的0x00e4483c未處理異常:0xC0000005:訪問衝突讀取位置0xcccccccc」。有人知道爲什麼通過引用傳遞2D動態分配的雙數組C在C
void main(void) {
double **F = NULL;
F = malloc(row * sizeof (double *));
for (m=0; m < row;m++) {
F[m] = malloc(col * sizeof(double));
}
FParser(string, &F);
for (m=0;m<rowF;m++)
free(F[m]);
free(F);
}
void FParser(char string[256], double ***F) {
while (dummyChar_ptr != NULL) {
dummyChar_ptr = strtok(dummyChar_ptr," ");
while ((dummyChar_ptr) != NULL) {
*F[row][col] = atof(dummyChar_ptr);
dummyChar_ptr = strtok(NULL," ");
col++;
}
col=0;
row++;
strcpy(dummyChar,string);
dummyChar_ptr = strtok(dummyChar,";");
for (x=0;x<row;x++)
dummyChar_ptr = strtok(NULL,";");
}
//example String: 1 0.1 0 0; 0 1 0 0; 0 0 1 0.1; 0 0 0 0.1
你爲什麼不發佈完整的代碼?我們無法找到您的行和列的定義。他們是全球變數嗎?也許問題是你在main和FParser之間共享行/列。 – Francis 2010-01-24 06:08:23
你可以修復你的代碼清單嗎?我認爲它缺少聲明和右大括號,很難閱讀。 – Anycorn 2010-01-24 06:09:45