如何在C99中释放2D结构数组

时间:2018-11-03 23:31:50

标签: c c99

这就是我创建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 :(得分:3)

您需要从分配内存时以“反向”释放内存。因此,首先,您需要释放数组(或其他结构)的元素,然后释放指针。

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