gpt4 book ai didi

c - 将 head 分配给指针 'p' 并在删除 head 后取消分配 'p' 有何意义?

转载 作者:行者123 更新时间:2023-11-30 20:17:34 25 4
gpt4 key购买 nike

我发现一个函数可以删除链表的头节点并将头移动到下一个节点。如果只需移动 head 即可得到相同的结果,那么将 head 分配给 p,并在移动 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;

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

关于c - 将 head 分配给指针 'p' 并在删除 head 后取消分配 'p' 有何意义?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57162939/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com