指向变量的指针的自由堆内存

时间:2014-07-15 08:40:50

标签: c pointers heap free

我的代码中有变量是指向指针的变量,我不知道它们分配的内存大小是多少。我如何释放我的变量堆内存? 假设有以下变量:

int*** a;
int** b;

并知道将可能分配的内存释放给他们的代码是什么?

2 个答案:

答案 0 :(得分:1)

首先,你有,

int*** a;
int** b;

所以,你有3维a,2维b,所以你需要一次分配1维。 e.g。

a = (int ***) malloc(sizeof(int **) * SIZE1); // presuming SIZE1 predefined

然后在循环中从0运行到SIZE1 -1, 分配给[i]。 e.g。

a[i] = (int **) malloc(sizeof(int *) * SIZE2); // presuming SIZE2 predefined

并继续这样做。 在解除分配期间,反过来,例如, 在循环中我从0运行到SIZE1 -1,

free(a[i]);

最后,释放一个as:

free(a);

希望你明白这个想法!

答案 1 :(得分:0)

如果freemalloccalloc返回指针,则只需将指针传递给realloc