当我尝试编译代码时,出现此错误,但我不知道为什么:
错误:“ free”参数1的类型不兼容 free(A [i]);
void freeMatrix(int N, double *A)
{
for(int i = 0; i < N; i++)
free(A[i]);
free(A);
}
答案 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);
}