如果我们的结构具有指向malloced内存的指针,那么如果我们释放该结构,该结构引用的内存是否也被释放?还是我们必须手动释放它?例如:
typedef struct{
FOMResult *fomResult;
HOMResult *homResult;
} MResult;
FOMResult和HOMResult都是结构。
答案 0 :(得分:1)
在释放fomResult
之前,您必须释放homResult
和MResult
指向的内存,否则最终会导致内存泄漏。
当然,如果您有其他指向这些内存块的指针,您可以使用它们来释放内存。
答案 1 :(得分:1)
该结构引用的内存是否也被释放?还是我们必须手动释放它?
后者。
动态分配的每个内存块都需要单独调用free()
。
答案 2 :(得分:0)
它基本上等于为分配内存而执行的malloc()
个数。如果使用malloc()
为结构指针动态分配内存fomResult
& fomResult
您应该使用单独的两个free()
函数释放内存以及释放MResult
。