c语言 - 将头部分配给指针"p",并在移除头部后取消分配"p"有什么意义?



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

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

// Why should I use this :
void deleteFromFront() {
    node p = head;
    printf("ntThe deleted element is : %dn", head->data);
    head = head->next;
    free(p);
}
// And not this :
void deleteFromFront() {
    printf("ntThe deleted element is : %dn", head->data);
    head = head->next;
}

此版本:

node p = head;
printf("ntThe deleted element is : %dn", head->data);
head = head->next;
free(p);

释放旧的头节点,以及以下版本:

printf("ntThe deleted element is : %dn", head->data);
head = head->next;

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

相关内容

  • 没有找到相关文章

最新更新