delete で落ちるんですが・・・

[戻る]
ガラ 2005/05/04(水) 08:43:29
OS XP VC++6.0

void Cxxxx::aaaa()
{  
    Cyyyy *wpoint =  new Cyyyy [1000] ;
    delete wpoint ;
}

delete で以下の中止/無視/継続ウインドウが出て、落ちるんですが、
どのようにデバッグしたらよいか、どなたか、アドバイスいただけませんでしょうか?

Debug Assertion Failed!
Program: C\work\xxxx.exe
File: dgbheap.c
Line: 1044

Expression: _CrtIsValidHeapPointer(pUserData)

For information on how your program can cause an assertion failure,
 see the Visual C++ documentation on asserts.

iijima 2005/05/04(水) 09:42:03
配列wpointの領域がきちんと解放されていないことが原因と思われます。
まずは、newで動的に確保した配列の領域はどのように解放すれば良いのか、C++言語の
参考書などでお調べになることをお勧めします。
対象が「配列」であることに注意してください。

ガラ 2005/05/04(水) 10:24:24
[[解決]]
iijima さんありがとうございます。
delete[]演算子を発見しました。

new に対してdelete
new[] に対してdelete[]
ということですね。

void Cxxxx::aaaa()
{  
    Cyyyy *wpoint =  new Cyyyy [1000] ;
    delete[] wpoint ; // delete -> delete[] に変更
}

古いスレッドには追加発言できません。