C++ 链接列表的my Erase()函数中存在错误
我正试图通过一个测试程序,我通过了所有测试,除了擦除功能,程序崩溃C++ 链接列表的my Erase()函数中存在错误,c++,linked-list,doubly-linked-list,C++,Linked List,Doubly Linked List,我正试图通过一个测试程序,我通过了所有测试,除了擦除功能,程序崩溃 我最好的猜测可能是前面或后面的哨兵节点正在被擦除。或者内存泄漏。我怀疑是否有人愿意阅读所有这些代码并为您找到bug,尤其是在没有安全漏洞的情况下。乍一看,函数void erase(迭代器it) 左->下一步\右 右->上一个=左 您没有检查right或left是否为null,如果在列表的开头或结尾删除,就会出现这种情况。此外,您还应该相应地修改列表的front_和back_ 您可以在这些分配之前添加支票: if(left)
我最好的猜测可能是前面或后面的哨兵节点正在被擦除。或者内存泄漏。我怀疑是否有人愿意阅读所有这些代码并为您找到bug,尤其是在没有安全漏洞的情况下。乍一看,函数
void erase(迭代器it)
左->下一步\右代码>
右->上一个=左代码>
您没有检查right或left是否为null,如果在列表的开头或结尾删除,就会出现这种情况。此外,您还应该相应地修改列表的front_
和back_
您可以在这些分配之前添加支票:
if(left)
left->next_ = right;
else
front_ = right;
if(right)
right->prev_ = left;
else
back_ = left;
你应该提供一个问题的最小复制,这是太多的代码。有一个问题,2参数擦除功能,我不知道它是什么,因为它打印“第7行测试”的程序崩溃,从来没有达到“第8行测试”在main的最底层,您甚至没有提供擦除功能。@Kelm很明显,第一个代码块注释不用于扩展讨论;这段对话已经结束。