【发布时间】:2014-09-15 01:14:29
【问题描述】:
这个解决方案足以解除链表的分配吗? 如何验证它正在释放分配给列表的内存?
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;
【问题讨论】:
-
为什么要将
EmpList * *(指向指针的指针)传递给函数? -
我相信调用者可以定义
EmpList *head,然后将head自动设置为NULL(通过调用freeList(&head)。) -
在我的实现中,并不是说我做对了,所以如果它错了请说出来,但是为了改变 listHead 我需要一个指针,因为我没有取消引用 listhead 的数据,而是而是指向列表的指针。 Neo 说了什么
-
也许这就是目的(尽管我认为它的风格很糟糕)。但是
freeList没有设置为NULL。 -
根据循环的工作方式,当循环结束时,它将是 *listHead == NULL
标签: c memory-management linked-list