gpt4 book ai didi

c - 在 while 循环中释放内存不断陷入无限循环

转载 作者:行者123 更新时间:2023-12-04 11:20:47 27 4
gpt4 key购买 nike

我只是想让这个 while 循环遍历 party -> fragments 的每个插槽如果不是 NULL,则释放每个点,但是当我去运行它时,它似乎陷入了无限循环。如果我插入一个 else 并在其中中断,它会运行,但我仍然存在内存泄漏。

  while(i < party -> num_active_fragments)
{
if(party -> fragments[i] != NULL)
{
free(party -> fragments[i]);
i++;
}
}

最佳答案

这里的问题是 i++应该在 if 语句之外。
无限循环是由于元素为 NULL 而在该迭代中引起的 i没有增加,同样的事情反复发生。

正如人们评论的那样,没有必要检查该值是否为 NULL。

正如@thebusybee 所评论的,您应该将释放的指针设置为 NULL。

您的代码可能如下所示:

while(i < party->num_active_fragments)
{
free(party->fragments[i]);
party->fragments[i] = NULL;
i++;
}

关于c - 在 while 循环中释放内存不断陷入无限循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60133360/

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