首页 > 解决方案 > 如何在 c99 中释放二维结构数组

问题描述

这就是我创建二维数组的方式。

   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;

我将如何释放这个?

标签: cc99

解决方案


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

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

推荐阅读