【问题标题】:How to free malloc arrays in an malloc array using struct如何使用 struct 释放 malloc 数组中的 malloc 数组
【发布时间】:2020-04-05 22:09:43
【问题描述】:

假设我有两个结构,我创建了一个缓存集的 malloc 数组,然后在我的 struct cacheSet 中使用 malloc 创建了 cacheLine 数组。我将如何释放所有这些 malloc?仅使用 free(cacheSet) 是否足以释放所有内容,这样我就不会发生内存泄漏?

struct cacheLine
{
  int valid;
  int tag;
  int block;
  int age;
  int accessed;

};

struct cacheSet
{
  int setnum;
  int lastAssessed;
  int E;
  struct cacheLine *lines;
};

【问题讨论】:

  • “假设我有两个结构,我创建了一个缓存集的 malloc 数组,然后在我的 struct cacheSet 中使用 malloc 创建了 cacheLine 数组”。我们不说。让我们显示您想到的确切代码。但一般规则很简单——每个malloc 必须有一个free
  • 所以我会遍历我创建的所有 cacheSet 并设置每个 cacheLine 空闲?
  • 是的,听起来这就是您所需要的。但是正如我所说,如果您显示精确的代码,那么我们可以给出更精确的答案。通常会编写一个cacheSet_free 函数来封装所有这些。
  • 是的,到目前为止我还没有任何代码,我只是想确定一下,以便我知道未来
  • 不过感谢您的澄清!

标签: c


【解决方案1】:

不,这还不够 - 您必须在释放 cacheSet 之前手动释放 struct cacheLine *lines 指向的每个元素。否则会出现内存泄漏。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-03-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-07
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多