为什么当我增加矩阵元素的值(例如 11 20 10)时出现分段错误。通常我得到的结果矩阵的第一行全为 0,第二行矩阵正确。有时它也会给出正确的结果。我不知道这段代码有什么问题
问问题
105 次
2 回答
1
一个潜在的问题是成员变量看起来K
可以改变:
(data->B) = malloc((data->K)*sizeof(float*));
scanf("%d%d", &(data->K), &(data->N));
for ( i=0;i<(data->K);i++)
...
它在设置 array 时首先被初始化A
。然后它用于分配基本数组以保存B
. 但是下一个scanf
可能会导致一个不再与以前相同的值(可能导致内存覆盖)。
于 2013-02-19T23:52:11.457 回答
1
看来你颠倒了这两行,
(data->B) = malloc((data->K)*sizeof(float*));
scanf("%d%d", &(data->K), &(data->N));
因此,您使用的是data->K的前一个值,因此如果您的第二个矩阵大于第一个矩阵,则您将访问未分配的内存 -> scanf("%f", &(data->B[ i][j]))
于 2013-02-19T23:53:15.733 回答