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驚きではありません。あなたは解放しようとしていますがNULL、これは確かにエラーです。

于 2012-12-21T11:04:07.190 に答える