我用這個簡單的代碼得到了一個奇怪的「分段錯誤:11」,無法弄清楚問題所在。我只需要動態聲明和大小爲nrows x ncolumns的數組。帶calloc的簡單二維數組導致分段錯誤
#include <stdlib.h>
#include <stdio.h>
int main()
{
int nrows = 3;
int ncolumns = 5;
int **array;
array = calloc(nrows, sizeof(int));
for(int i = 0; i < nrows; i++)
{
array[i] = calloc(ncolumns, sizeof(int));
if(array[i] == NULL)
{
fprintf(stderr, "out of memory\n");
exit(-1);
}
}
for(int i = 0; i < nrows; i++)
{
for(int j = 0; j < ncolumns; j++)
{
array[i][j] = 10;
printf("%d %d: %d\n",i,j, array[i][j]);
}
}
return 0;
}
'array = calloc(nrows,sizeof(int));' - >'array = calloc(nrows,sizeof(int *));' – BLUEPIXY
是的,就是這樣!謝謝。 – Miguel
代碼中沒有2D數組。指針不是數組。 – Olaf