我有一個2D動態數組。 我輸入線後面的線0的具有最大數量:內存中的未知錯誤C
void InsertZero(int **a, int pos){
int i, j;
a = (int**)realloc(a, n * sizeof(*a));
a[n-1] = (int*)calloc(n, sizeof(**a));
d = 0;
for(i = n-1; i > pos; i--){
for(j = 0; j < n; j++){
a[i][j] = a[i-1][j];
printf("%d ", a[i][j]);
}
}
for(i = 0; i < n; i++){
a[pos][i] = 0;
}
}
,如果我做一個大小排列3,5,7,9,......它工作正常。但是,如果行數爲2,4,6,...,它是一個訪問衝突錯誤,當我嘗試打印我的數組:
void Print(void){
int i, j;
for(i = 0; i < (n-d); i++){
for(j = 0; j < n; j++){
printf("%d\t", arr[i][j]);
}
printf("\n");
}
}
代碼:http://codepad.org/JcUis6W4
讓我們來詳細談一下這個錯誤,謝爾蓋。你得到的輸出是什麼,你期望的輸出是什麼? – ypnos
當我嘗試讀取一個[0] [0]並且我的數組包含2,4,6,8,...行和colom時,出現訪問衝突錯誤 –
在我看來,您永遠不會初始化任何分開一個[n-1]。所以我不知道你在哪裏設置n,以及你在哪裏調用InsertZero,但我認爲你需要查看這個方向或者在這裏發佈代碼。 – ypnos