我用这个简单的代码得到了一个奇怪的“分段错误: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