为什么为动态分配的二维数组获得“分段错误”?

时间:2015-06-02 14:04:50

标签: c arrays pointers

我试图通过使用动态分配的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 ]

1 个答案:

答案 0 :(得分:1)

您已为行数组分配了内存,但您没有为每行分配内存。

目前result[i]指向未分配的内存。