Свободная куча памяти указателя на переменную указателей
В моем коде есть переменные, которые являются указателем на указатель, и я не знаю, каков размер их выделенной памяти. Как я могу освободить память переменных? Предположим, следующие переменные:
int*** a;
int** b;
а знаете какой код для освобождения возможной выделенной им памяти?
2 ответа
Во -первых, у вас есть,
int*** a;
int** b;
Итак, у вас есть 3-мерная а, 2-мерная b, поэтому вам нужно выделить 1 измерение за один раз. например
a = (int ***) malloc(sizeof(int **) * SIZE1); // presuming SIZE1 predefined
затем в цикле i, работающем от 0 до SIZE1 -1, выделите для [i]. например
a[i] = (int **) malloc(sizeof(int *) * SIZE2); // presuming SIZE2 predefined
и продолжай в том же духе. Во время освобождения сделайте это наоборот, например, в цикле, который работает от 0 до SIZE1 -1,
free(a[i]);
наконец, бесплатно как:
free(a);
Надеюсь, вы поняли идею!
Вам просто нужно передать указатель на free
если он возвращается malloc
, calloc
или же realloc
,