有一个类似的问题here。
我有以下结构:
struct SimpleXY
{
double x;
double y;
};
struct SimpleEdge
{
SimpleXY first;
SimpleXY second;
}
struct SimpleEdgeList
{
uint num_edges;
SimpleEdge *SimpleEdges;
};
SimpleEdgeList
释放内存的正确方法是什么?这是我目前的方法,但我想知道是否应该手动释放first
和second
数据字段。
void Free(SimpleEdgeList *myList)
{
free(myList->SimpleEdges);
}
这是一个C结构,我正在寻找像C一样的内存释放。
答案 0 :(得分:5)
您无需手动释放字段。释放myList->SimpleEdgeList
引用的内存时,对free()
的调用将清除整个内存块,包括您提到的两个字段。由于这些字段不包含指向任何其他对象的指针,因此您无需进入它们以回收内存。
答案 1 :(得分:4)
您目前的做法很好。
简单的规则就是:每个free()
只需要一个malloc()
。由于您只有一个malloc()
,因此您只需要一个free()
。