c - 如何在 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;
我将如何释放这个?
解决方案
您需要从分配内存时“反向”释放内存。因此,首先,您需要释放数组(或其他结构)的元素,然后释放指针。
void freeMap(Space map){
for (int i = 0; i < row; ++i)
free(map[i]);
free(map);
}
推荐阅读
- android - 如何在 Android Studio 中更改按钮的文本,当它被点击时
- cassandra - 在 cassandra 3.11 生产集群上更改键空间以切换到 NetworkTopologyStrategy
- matlab - num2str((rng'* (sp(t)-sa(t))) + sa(t),'%2.2g')
- prolog - Why doesn't this clpfd query terminate until I add a redundant constraint?
- node.js - 角http错误状态0
- c# - 你如何展平列表
在 C# 中,如果 T = 列表 ? - python - 使用 Python 在磁盘上检索大数据的最佳结构?
- r - 如何在r上提取对数对数线性函数的方程
- sql - 试图让跑步总数发挥作用
- java - 带有 java.lang.NullPointerException 消息的 Eclipse java 氧气错误