我有这样的结构
struct list
{
struct list *next;
int temp;
};
我使用以下方法释放
...。 ...。 ...
// free linked list
struct list *head_list = NULL;
struct list *current_list = NULL;
struct list *prev_list = NULL;
current_list = head_list;
while (current_file_info_arr != NULL)
{
prev_list = current_list;
current_list = current_list->next;
free(prev_list);
}
我收到了警告
Memory error
Use of memory after it is freed
有什么好的解决方案吗?
答案 0 :(得分:1)
我认为你只需要替换
while (current_file_info_arr != NULL)
与
while (current_list != NULL)
但是假设你实际上有一个列表 - 先前已分配/构建 - 并且head_list
指向它的开头。如果head_list
为NULL
,就像在您的代码段中一样:
struct list *head_list = NULL;
然后Memory error
并不令人意外。你试图释放NULL
,这确实是一个错误。