尝试打印链表 C 时出现分段错误

Segmentation fault when trying to print linked list C

我正在尝试打印我的链表,直到下一个节点为 NULL,但我在打印两个节点后出现段错误。 mov 是我的链表节点。

while(mov->next != NULL)
{
    printf("%s\n", mov->movie_title);
    printf("%s\n", mov->...etc...)

    free(mov);
    mov = mov->next;
}

这是我用来将数据分配给节点的推送函数。

void push(movie** mov)
{
    movie* new = malloc(sizeof(movie));
    new->next = (*mov);
    (*mov) = new;
}

将数据分配给节点后,我调用push(&mov);

我之前使用的是结构数组,但由于需要存储的内存量变得非常大,我认为它不会很好地工作,因为 malloc 分配了一个连续的内存块,而对于节点,我可以为每个节点分配小块内存。

这里的问题出在 free(mov) 行和后面的内容中。

你是自由的 mov 然后尝试在它旁边分配 mov->,你看到问题出在哪里了吗?
mov->next 无法再访问,因为您释放了存储它的结构

打印整个链表的更好方法是设置一个 "temporary" 变量,它将浏览列表的每个节点并在执行时打印每个值。

举个例子:

void printMovieList(movie** mov) {
    movie* temp;

    temp = *mov;
    while(temp->next != NULL)
    {
        printf("%s\n", temp->movie_title);
        printf("%s\n", temp->...etc...);
        temp = temp->next;
    }
}