0

クラスの割り当てでは、作成したリンク リストのオブジェクトのデストラクタを実装する必要があります。MakeEmptyデストラクタ内で呼び出す関数を作成しました。最初は正しくコンパイルされましたが、今では次のようなエラーですぐにクラッシュします。

式: _BLOCK_TYPE_IS_VALID(pHead->nBlockUse)

誰かが何が間違っているかを理解するのを手伝ってくれますか? デバッガーを実行し、エラーがコード内のどこにあるかを指摘しました。

WORD::~WORD()
{
cout << "Destructor Called"<<endl;

(*this).MakeEmpty();
}

これが MakeEmpty() 関数です

void WORD::MakeEmpty()
{
alpha_numeric *p = (*this).front;

if((*this).IsEmpty())
{
    cout <<"Already empty"<< endl;
    return;
}

while(front != 0)
{
    front = front -> next;
    delete p;//<<<<---DEBUGGER SAYS ERROR HERE
    p = front;
}
return;
}
4

2 に答える 2

3

これは宿題なので、解決策ではなくヒントを与えるつもりです。

while(front != 0)
{
    front = front -> next;
    delete p;//<<<<---DEBUGGER SAYS ERROR HERE
    p = front;
}

この間、リストのどこで削除を開始/終了しますか? なぜ?

于 2012-06-08T05:09:09.193 に答える
0

コーディング エラーがあります...次のことを行う必要があります: コードをベンチ チェックしてください。

各ステートメントで、およびループの各反復を通じて、すべての変数の期待値を書き留めます。どの手順もスキップしないでください。これにより、コーディング エラーが明らかになります。

30年後、私はこれを頭の中でやっています..しかし、私は自分が書いたものが正しいことを確認するために常にそうしています. この1つの習慣は、今後何年にもわたって役に立ちます。

于 2012-06-08T05:22:45.907 に答える