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很明显,第一个代码块注释不用于扩展讨论;这段对话已经结束。