2017-04-04 19 views
0

2dリンクリストで作業していて、リンクされた各リストが右下を指していると、プログラムがクラッシュするたびにエラーが発生します。 例外がスローされました。 は0xCDCDCDCDでした。 4行目でb = a-> nextの例外がスローされました。2dリンクリストデストラクタ

while (a != NULL) 
{ 
    nodePtr temp = a->next; 
    nodePtr temp1 = c->bottom; 
    delete a; 
    delete c; 
    a = temp; 
    c = temp1; // fixed definitely incorrect assignment 
} 

acポインタがあなたに会っているときは、未定義の動作を持っています。でも(つまり、アイテムの数が偶数であることを意味する)は、このコードが正しく動作していることを想定し

LinkedList::~LinkedList() 
{ 
nodePtr a = head; 
nodePtr b = a->next; 
nodePtr c = down; 
nodePtr d = c->bottom; 

while (a != NULL) 
{ 
    nodePtr temp = a->next; 
    nodePtr temp1 = c->bottom; 
    delete a; 
    delete c; 
    a = temp; 
    c = temp; 
} 

}

+0

'a'がnullでないことを確認していますが、 'c'はどうですか?また、どの行に例外がスローされますか? – AlexG

+0

先に何かを初期化するのを忘れました。 – molbdnilo

+0

値 '0xcdcdcdcd'は、Visual Studioとそのデバッガで通常初期化されていないグローバルメモリをマークするために使用されます(例:[this MSDN reference](https://msdn.microsoft.com/en-us/library/aa260966(v = vs .60).aspx))。つまり、その値を持つ変数がある場合、その変数を適切に初期化していません。コンストラクタで 'nullptr'へのポインタを設定していませんか? –

答えて

0

すでに削除されているノードを削除してください。

したがって、IMHOはノードを一方向にのみ削除することです(順方向を選択します)。