【问题标题】:free heap memory of pointer to pointers variable释放指向指针变量的堆内存
【发布时间】:2014-09-05 09:00:45
【问题描述】:

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

int*** a;
int** b;

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

【问题讨论】:

  • 你是如何分配它们的?
  • “我不知道大小是多少”是什么意思...应该在 m/c 分配例程中
  • 您可以在拨打 malloca/calloc 的时间免费拨打电话。 look
  • 真的分配了吗?你知道的?可能采取一些地址..?但无论如何免费会照顾它。
  • 我只是将它们传递给一个函数并分配堆,但我不知道它的大小

标签: c pointers heap-memory free


【解决方案1】:

首先,你有,

int*** a;
int** b;

所以,你有 3 维 a,2 维 b,所以你需要一次分配 1 个维度。 例如

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

然后在一个循环中,我从 0 运行到 SIZE1 -1, 分配给 a[i]。例如

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

然后继续这样。 在解除分配期间,反向执行,例如 在一个循环中,我从 0 运行到 SIZE1 -1,

free(a[i]);

最后,释放一个 as:

free(a);

希望你能明白!

【讨论】:

  • 不知道尺寸怎么办? @DebasishJana
  • @rezCash 你需要,因为,当你分配空间时,你需要知道你分配了多少这样的项目,a = (int ***) malloc(sizeof(int **))将为一个分配空间,就好像 SIZE1 = 1
【解决方案2】:

如果malloccallocrealloc 返回的指针,您只需将指针传递给free

【讨论】:

    猜你喜欢
    • 2016-03-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-03-09
    • 2012-12-28
    • 2016-07-18
    • 1970-01-01
    相关资源
    最近更新 更多