解除分配链表

时间:2014-09-15 01:14:30

标签: c memory-management linked-list

此解决方案是否足以取消分配链表? 如何验证它是否释放了分配给列表的内存?

void freeList(EmpList** listHead)
{
    EmpList* iter = *listHead;
    while(iter != NULL)
    {
        iter = iter->next;
        free(*listHead);
        *listHead = iter;
    }

}

这是结构

typedef struct employeeData
{
    int EMP_ID;
    char name[21];
    int dept;
    int rank;
    double salary;
} Employee;

typedef struct empList
{
    Employee employee;
    struct empList* next;
} EmpList;

1 个答案:

答案 0 :(得分:3)

您可以使用像Valgrind这样的内存检查器验证它正在释放内存。如果您留下任何内存悬挂,内存检查程序会在程序结束时通知您。此外,Valgrind可以检查各种内存滥用情况(使用解除分配的内存,未初始化的内存以及更多其他功能,从阵列末尾开始)。

至于你的实现,它看起来很合理。