1

我有这样的结构

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

有什么好的解决办法吗?

4

1 回答 1

1

我想你只需要更换

while (current_file_info_arr != NULL)

while (current_list != NULL)

但这是假设您实际上有一个列表 - 之前已分配/构建 - 并head_list指向它的开头。如果head_listNULL,就像在您的代码段中一样:

struct list *head_list = NULL;

那么就Memory error不足为奇了。您正在尝试 free NULL,这确实是一个错误。

于 2012-12-21T11:04:07.190 回答