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