【发布时间】: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