gpt4 book ai didi

c - 释放链表中的节点

转载 作者:行者123 更新时间:2023-11-30 15:10:42 25 4
gpt4 key购买 nike

我正在尝试释放在 addRec 函数中分配的链表中的每个节点。

更改:将我的免费函数重命名为 free_list。

我对免费的呼吁如下:

main()
{
struct record * start = NULL;
runmenu(......,start); //Ends when user chooses option to quit
.
.
free_list(start);
}

void runmenu(.....,struct record * pstart)
{
addRec(&start,....);
}

void addRec(struct record ** start,.....)
{
struct record *toAdd;
toAdd = (struct record*)malloc(sizeof(struct record));

if (*start = NULL)
{
*start = toAdd;
} else {
struct record *current = start;
toAdd->next = current->next;
current->next = toAdd;
.
. //Adds into linked list
}
}

我的免费函数如下所示:

void free_list(struct record* head)
{
struct record *temp;

while((temp = head) != NULL)
{
head = head->next;
free(temp);
}
}

我似乎仍然存在内存泄漏。这是正确的吗?

最佳答案

您提供了自己的函数,名为 free(),这意味着标准函数不可用。重命名您的函数 free_list() 并在 main() 中调用该函数来释放列表。在(现已重命名)free_list() 函数内,您仍然调用标准 free() 函数。

关于c - 释放链表中的节点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36024937/

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