我试图通过使用动态分配的2-d数组来生成pascal三角形。但是当我试图运行时,它给我“分段错误”错误。我在代码中做错了什么?
int ** generate(int A, int *number_of_rows) {
*number_of_rows = A;
int **result = (int **)malloc(A * sizeof(int *));
int i,j;
for(i=0; i < A; i++){
for(j=0; j<= i; j++){
if(i==j || j==0)
result[i][j] = 1;
else
result[i][j] = result[i-1][j] + result[i-1][j-1];
}
}
return result;
}
有人说我需要为每一行分配内存,如下所示
for (i = 0; i < A; i++)
result[i] = (int *)malloc(i * sizeof(int));
但在这之后该函数返回
[0 ] [1 ] [2 ] [3 ] [4 ]
代替
A {5
[1 ] [1 1 ] [1 2 1 ] [1 3 3 1 ] [1 4 6 4 1 ]
答案 0 :(得分:1)
您已为行数组分配了内存,但您没有为每行分配内存。
目前result[i]
指向未分配的内存。