Dab*_*gab 1 c segmentation-fault
如果我运行我的程序,当我输入矩阵的维度时,在输入矩阵的第一个值后,控制台会写出:分段错误
例如:
4
3
Run Code Online (Sandbox Code Playgroud)
分段错误进程返回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;
}
Run Code Online (Sandbox Code Playgroud)
您没有为矩阵的元素分配内存,仅用于指向各行的指针.
你需要这样的东西:
for (i = 0; i < n; i++)
matrix[i] = malloc(n * sizeof(double));
Run Code Online (Sandbox Code Playgroud)
当然,当你完成它时,你必须以相同的方式释放东西.
for (i = 0; i < n; i++)
free(matrix[i]);
free(matrix);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
262 次 |
| 最近记录: |