1

したがって、クラスAとクラスBを取得しました。ここで、クラスAはクラスBの基本クラスです。ただし、次のようなことを行うと、次のようになります。

int main()
{
   B der(222);
   A* test;
   test = &der;
   delete test;
}

エラーが発生しました:

debug assertion failed!

program:.......
line 52 

Expression:_BLOCK_TYPE_IS_VALID(pHead0>nBlockUse)

何か案が?

4

2 に答える 2

3

delete手動でメモリを割り当てていない変数を呼び出すことはできません。

于 2013-02-25T04:21:50.877 に答える
2

あなたのコードderでは、動的に割り当てられたオブジェクトではありません。つまり、 を使用して割り当てられませんnew。したがってdelete、そのオブジェクトでは使用しないでください。derオブジェクトは、スコープ外になると自動的に破棄されます。を使用する場合はdelete、次を使用してオブジェクトを作成する必要がありますnew

A * test = new B(222);
delete test;
于 2013-02-25T04:26:16.280 に答える