Почему это показывает мне ошибку, когда я пытаюсь освободить матрицу?

0
задан Sami Kuhmonen 8 April 2019 в 11:36
поделиться

2 ответа

Основываясь на коде, вы пытаетесь освободить матрицу (массив массивов) при передаче массива в качестве параметра функции. Попробуйте следующее:

void freeMatrix(int N, double ** A)
{
    for(int i = 0; i < N; i++)
        free(A[i]);
    free(* A);
}
0
ответ дан Diodacus 8 April 2019 в 11:36
поделиться

Недостаточно репутации, чтобы комментировать, поэтому пишу как ответ.

[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));

В этом случае один вызов

[112 ]

достаточно. В общем, вы должны вызывать free () точно так же часто, как malloc ()

0
ответ дан Michael Feldmeier 8 April 2019 в 11:36
поделиться
Другие вопросы по тегам:

Похожие вопросы: