为什么在我尝试释放矩阵时显示错误?

Why is this showing me an error when I try to free a matrix?

当我尝试编译我的代码时,出现此错误,我不知道为什么:

error: incompatible type for argument 1 of ‘free’ free(A[i]);

void freeMatrix(int N, double *A)
{
for(int i = 0; i < N; i++)
        free(A[i]);
free(A);
}

根据代码,您尝试在将数组作为函数参数传递时取消分配矩阵(数组的数组)。请尝试以下操作:

void freeMatrix(int N, double ** A)
{
    for(int i = 0; i < N; i++)
        free(A[i]);
    free(* A);
}

没有足够的声誉来发表评论,因此写下答案。

A[i] 是双精度类型。 free() 需要一个指针。您可能是想将函数声明为

void freeMatrix(int N, double **A){
   for(int i = 0; i < N; i++)
      free(A[i]);
   free(A);
}

问题已澄清:矩阵最初创建为

double *A = (double *)malloc(N * N * sizeof(double));

在这种情况下,单个调用

free(A);

够了。通常,您应该像调用 malloc()

一样频繁地调用 free()