为什么在我尝试释放矩阵时显示错误?
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()
当我尝试编译我的代码时,出现此错误,我不知道为什么:
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()