自由结构和堆

时间:2014-02-25 17:43:40

标签: c

如果我们的结构具有指向malloced内存的指针,那么如果我们释放该结构,该结构引用的内存是否也被释放?还是我们必须手动释放它?例如:

typedef struct{
    FOMResult *fomResult;
    HOMResult *homResult;
} MResult;

FOMResult和HOMResult都是结构。

3 个答案:

答案 0 :(得分:1)

在释放fomResult之前,您必须释放homResultMResult指向的内存,否则最终会导致内存泄漏。

当然,如果您有其他指向这些内存块的指针,您可以使用它们来释放内存。

答案 1 :(得分:1)

  

该结构引用的内存是否也被释放?还是我们必须手动释放它?

后者。

动态分配的每个内存块都需要单独调用free()

答案 2 :(得分:0)

它基本上等于为分配内存而执行的malloc()个数。如果使用malloc()为结构指针动态分配内存fomResult& fomResult您应该使用单独的两个free()函数释放内存以及释放MResult