我有一个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