我的代码中有变量是指向指针的变量,我不知道它们分配的内存大小是多少。我如何释放我的变量堆内存? 假设有以下变量:
int*** a;
int** b;
并知道将可能分配的内存释放给他们的代码是什么?
答案 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)
如果free
,malloc
或calloc
返回指针,则只需将指针传递给realloc
。