具有两个数据字段的结构的自由记忆

时间:2011-01-15 06:55:10

标签: c

有一个类似的问题here

我有以下结构:

struct SimpleXY
{
    double x;
    double y;

};

struct SimpleEdge
{
   SimpleXY first;
   SimpleXY second;
}

    struct SimpleEdgeList
    {
            uint num_edges;
            SimpleEdge *SimpleEdges;
    };

SimpleEdgeList释放内存的正确方法是什么?这是我目前的方法,但我想知道是否应该手动释放firstsecond数据字段。

void Free(SimpleEdgeList *myList)
{

    free(myList->SimpleEdges);
}

这是一个C结构,我正在寻找像C一样的内存释放。

2 个答案:

答案 0 :(得分:5)

您无需手动释放字段。释放myList->SimpleEdgeList引用的内存时,对free()的调用将清除整个内存块,包括您提到的两个字段。由于这些字段不包含指向任何其他对象的指针,因此您无需进入它们以回收内存。

答案 1 :(得分:4)

您目前的做法很好。

简单的规则就是:每个free()只需要一个malloc()。由于您只有一个malloc(),因此您只需要一个free()