此解决方案是否足以取消分配链表? 如何验证它是否释放了分配给列表的内存?
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;
答案 0 :(得分:3)
您可以使用像Valgrind这样的内存检查器验证它正在释放内存。如果您留下任何内存悬挂,内存检查程序会在程序结束时通知您。此外,Valgrind可以检查各种内存滥用情况(使用解除分配的内存,未初始化的内存以及更多其他功能,从阵列末尾开始)。
至于你的实现,它看起来很合理。