我找到了一个函数,它可以删除链表的头节点并将头移动到下一个节点。将头分配给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
内存,程序将使用越来越多的内存,因为系统仍然认为程序正在使用它。这称为内存泄漏。