如果我运行我的程序,当我输入矩阵的维数时,在我输入矩阵的第一个值之后,控制台会写下:分段错误
例如:
4
3
分段故障
进程返回139(0x8B)
void inMatrix(int n, double **matrix)
{
int j, i;
for (i = 0; i < n; i++)
{
for (j= 0; j < n; j++)
{
scanf("%lf", &matrix[i][j]);
}
}
}
void inVector(double *vektor, int n)
{
int k;
for (k = 0; k < n; k++)
{
scanf("%lf", &vektor[k]);
}
}
int main()
{
int n;
// read dimension of matrix and value
scanf("%d", &n);
//matrix
double** matrix = (double **) calloc(n, sizeof ( double*));
//vector
double* vector = (double *) calloc(n, sizeof ( double));
// read values of matrix
inMatrix(n, matrix);
// read values of vector
inVector(vector, n);
outVector(vector, n);
printf("\n");
return 0;
}
最佳答案
您没有为矩阵的元素分配内存,只为指向各行的指针分配内存。
你需要这样的东西:
for (i = 0; i < n; i++)
matrix[i] = malloc(n * sizeof(double));
当然,你必须以同样的方式释放东西,当你完成它。
for (i = 0; i < n; i++)
free(matrix[i]);
free(matrix);
关于c - 取矩阵的第一个值时的分割错误,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/7825348/