テスタープログラムを渡そうとしていますが、私の消去機能を除いてすべてのテストに合格します。プログラムがクラッシュします。リンクリストのErase()関数のバグ
おそらく、正面または背面のセンチネルノードが消去されている可能性があります。またはメモリリーク。
テスタープログラムを渡そうとしていますが、私の消去機能を除いてすべてのテストに合格します。プログラムがクラッシュします。リンクリストのErase()関数のバグ
おそらく、正面または背面のセンチネルノードが消去されている可能性があります。またはメモリリーク。
誰もがこのコードをすべて読んで、特にMCVEが存在しない場合に、このコードを読んであなたのバグを見つけようとします。一見すると、右または左のどちらかがnullの場合は、あなたが最初に削除した場合に発生する、チェックしていなかった機能で、明らかに間違って何か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;
コメントは議論の延長ではありません。この会話は[チャットに移動]されています(http://chat.stackoverflow.com/rooms/136673/discussion-on-answer-by-ash-bug-in-my-erase-function-for-linked-list) 。 –
あなたは、これはあまりにも多くのコードで、問題の最小限の再現を提供する必要があります。 – Kelm
2 param erase機能に問題があり、 – bb13
が "line 7 test"を印刷してプログラムがクラッシュし、メインの一番下の "line 8 test"に決して到達しないことがわかりません – bb13