c - 我需要释放子成员的分配内存还是足以释放父成员?

标签 c malloc free

考虑以下结构:

struct intNode
{
    int num;
    intNode* pNext;
};

struct list
{
    intNode* first;
    intNode* last;
    int size;

};

假设我为列表分配了内存。如果我调用 free(lst),它是否也会首先和最后释放分配给 intNode 的内存?他们自己的 pNext 呢?直觉上我觉得我需要从内到外递归释放嵌套的内存块。

最佳答案

您需要单独释放它们,但通常对于链接列表,这是迭代完成的,而不是递归的:

void DeleteList(struct intNode *pHead)
{
    struct intNode *pCur=pHead, *pDel=NULL;
    while(pCur != NULL)
    {
        pDel = pCur;
        pCur = pCur->pNext;
        free(pDel);
    }
}

关于c - 我需要释放子成员的分配内存还是足以释放父成员?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18945872/

相关文章:

c - 解析命令行参数后执行某些操作的最佳方法

c - 带符号的 NaN 值

c - 分配二维数组的怪异方式?

c++ - 如何追踪导致段错误的原因?

ios - NSMutableDictionary 有两个指向同一对象的键导致 "double free"异常

c - 释放结构内结构中的分配

.net - C+C# 进程间通信 : Named Pipes, 内存映射文件还是其他?

c - c 中的矩阵和对角线任务

c - 如何检查 free(node) 是否有效

objective-c - 自由函数在 c/objective-c 中不起作用