将 head 分配给指针 'p' 并在移除 head 后取消分配 'p' 有什么意义?

What is the point in assigning head to a pointer 'p', and de-allocating 'p' after removal of head?

我找到了一个删除链表的头节点并将头移动到下一个节点的函数。将 head 分配给 p 并在移动 head 之后取消分配它有什么用,如果可以只移动 head 并获得相同的结果。

我刚刚使用了 printf("%d", head->data) 和 head = head->next,得到了相同的结果。我在浪费记忆吗?

// Why should I use this :
void deleteFromFront() {
    node p = head;
    printf("\n\tThe deleted element is : %d\n", head->data);
    head = head->next;
    free(p);
}

// And not this :
void deleteFromFront() {
    printf("\n\tThe deleted element is : %d\n", head->data);
    head = head->next;
}

这个版本:

node p = head;
printf("\n\tThe deleted element is : %d\n", head->data);
head = head->next;
free(p);

释放旧的头节点,这个版本:

printf("\n\tThe deleted element is : %d\n", head->data);
head = head->next;

没有。如果要释放旧的头节点,则必须使用第一个版本。如果你free一块内存,下次调用malloc时可以重复使用。如果你在用完后不free你的内存,你的程序将使用越来越多的内存,因为系统仍然认为你的程序正在使用它。这称为内存泄漏。