Как освободить 2d массив структур в c99 - PullRequest
0 голосов
/ 04 ноября 2018

Так я создаю 2d массив.

   Space **create_map( int row, int col) {
        Space **map = malloc(row * sizeof(Space*));
        for (int i = 0; i < row; ++i)
            map[i] = malloc(sizeof(Space) * col);
        return map;
    }

Это компоненты структуры

typedef struct Space{
    char character;
    int isVisited;
    int row;
    int column;
    int stepCount;
}Space;

Как мне это освободить?

1 Ответ

0 голосов
/ 04 ноября 2018

Вам необходимо освободить память «в обратном порядке» с момента ее выделения. Итак, во-первых, вам нужно освободить элементы массива (или другую структуру), а затем освободить указатель.

void freeMap(Space map){
    for (int i = 0; i < row; ++i)
        free(map[i]);
    free(map);
}
...