假设我有一个用这样的东西创建的二维数组,
char **foo = (char **) malloc(height * sizeof(char *));
for(i = 0; i <= height; i++)
foo[i] = (char *) malloc (width * sizeof(char *));
首先,这甚至是创建这样一个数组的正确方法吗?这里的问题是,“高度”和“宽度”是在运行时设置的。
这似乎可行,但这是释放这个二维数组的最佳策略。免费(真菌)听起来不对。通过这里的其他一些帖子,我想我会一一释放每一行?
我确实尝试过这样的事情,
for (height = 0; height < ip_ptr->funge_height; height++) {
free(funge[height]);
}
free(funge)
然而,这给了我一个双自由指针异常。这是否意味着,我不必管理这块内存?我的印象是,对于每个 malloc 的内存,我们都应该调用 free()。