gpt4 book ai didi

c - 为什么动态分配的二维数组会得到 "Segmentation fault"?

转载 作者:行者123 更新时间:2023-11-30 15:19:33 26 4
gpt4 key购买 nike

我试图通过使用动态分配的二维数组来生成帕斯卡三角形。但是当我尝试运行时,它给了我“段错误”错误。我在代码中做错了什么?

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]代替[1 ] [1 1 ] [1 2 1 ] [1 3 3 1 ] [1 4 6 4 1 ] 对于 A = 5

最佳答案

您已为行数组分配了内存,但尚未为每一行分配内存。

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

关于c - 为什么动态分配的二维数组会得到 "Segmentation fault"?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30598360/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com