我的erase()函数中的bug用于链接列表
Bug in my Erase() function for linked list
我正在尝试通过测试程序程序,并且我通过所有测试,除非涉及我的擦除功能,否则程序崩溃了。
我最好的猜测可能是删除前哨节点。或内存泄漏。
我怀疑任何人都愿意阅读所有这些代码并为您找到错误,尤其是在没有MCVE的情况下。乍一看,功能void erase(iterator it)
left->next_ = right;
right->prev_ = left;
您尚未检查右或左为空的,如果您在列表的开头或末尾删除,则会发生。另外,您应该相应地修改列表的front_
和back_
。
您可以在这些作业之前添加支票:
if(left)
left->next_ = right;
else
front_ = right;
if(right)
right->prev_ = left;
else
back_ = left;
相关文章:
- 1d 智能指针不适用于语法 (*)++
- 使用C++库在Android项目中修改gradle中的cmake参数,用于插入指令的测试
- 用于访问容器<T>数据成员的正确 API
- 重载操作程序时出错>>用于类中的字符串 memebr
- 如何防止 c++ 在从浮点型转换为双精度型(不适用于 IO)时添加额外的小数?
- C++中的cin.ignore()函数不适用于整个流
- 没有用于初始化C++中的变量模板的匹配构造函数
- 用于C++中带有数组和指针的循环
- 为什么它不适用于Visual 2019的原因
- 使用在用于SFINAE的void_t中具有参数的方法
- 在createdialog创建的窗口中捕获用于编辑控件的OnMouseMove消息
- 重载==不适用于二进制树
- Insert函数不适用于2 if语句C++
- Clang bug?使用指针作为模板参数
- 用于矢量处理的多个线程
- 使外部项目可用于find_package CMake
- 在子目录中使用target_sources()命令时用于单元测试(qtest)的项目结构
- 为什么模数运算符不适用于该代码
- 并行用于C++17中数组索引范围内的循环
- 我的erase()函数中的bug用于链接列表