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

时间:2019-04-08 11:30:58

标签: c arrays free

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

  

错误:“ free”参数1的类型不兼容         free(A [i]);

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

2 个答案:

答案 0 :(得分:2)

声誉不足,无法发表评论,因此只能作为答案。

A [i]的类型为double。 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()

答案 1 :(得分:0)

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

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