gpt4 book ai didi

c++ - 我可以在析构函数中遍历链表的头节点吗?

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:35:33 25 4
gpt4 key购买 nike

这似乎是一个愚蠢的问题,但我问的原因是因为我有这个析构函数:

list::~list()
{
for (node* next = headByName->nextByName; headByName; headByName = next)
{
delete headByName;
}
}

而且 valgrind 仍然说我有内存泄漏。所以我想我真正的问题是:我的析构函数编码是否错误,或者通过遍历列表的头节点来销毁列表是否不好?

最佳答案

您的代码没有做正确的事情。

  1. 您永远不会更改 next,因此 headByName 在第一次迭代后不会更改。
  2. 如果在循环开始之前 headByName 是 nullptr,则在初始化中取消引用 nullptr。

试试这个:

list::~list()
{
while (headByName)
{
node* next = headByName->nextByName;
delete headByName;
headByName = next;
}
}

关于c++ - 我可以在析构函数中遍历链表的头节点吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33049469/

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