質問: デバッグ中のエラーのことで教えてください。 下のようなエラーが出て困っています。 コンパイルされているのですが、いろいろなサイトを調べましたが、どのようなエラーであるのかが結局わからなかったので、ここで質問しました。 プログラミング環境は、 microsoft visual studio .net 2003 です。 osはwindows xp sp3 です。 debug assertion failed! file:dbgdel.cpp line:52 expression: _block_type_is_valid(phead->nblockuse) for information on how your program can cause an assertion failure, see the visul c++ documentation on asserts. というエラーが出ます。 メモリ容量、cpuに関しては4gb,クロック3ghzのクアッドコアを使用しているので、ここで問題が発生しているとは考えられないです。一体、どのようなエラーなのでしょうか??? よろしくお願いします。
回答: これはランタイムエラーなのですが dbgdel.cpp:52が悪いわけではなく それを読んでいるプログラムが悪いのです コールスタックを表示してみてください(デバッグ->ウィンドウ->呼び出し履歴かな?) 例えば次のプログラム char* p = new char; delete p; delete p; これで確実に同じエラーとなります エラーダイアログが表示されたら「再試行(r)」を選んでください コールスタックには以下のような表示が出ます 質問者が言っているのはaですが、ここが悪いのではなく これを呼んだbが悪いのです (bをダブルクリックすると、該当ソースに飛びます) a.skelton.exe!operator delete(void * puserdata=0x00bb5b48) 行 52 + 0x51 バイトc++ b.skelton.exe!winmain(hinstance__ * hinst=0x00400000, hinstance__ * __formal=0x00000000, hinstance__ * __formal=0x00000000, hinstance__ * __formal=0x00000000) 行 512 + 0x15 バイトc++ c.skelton.exe!__tmaincrtstartup() 行 324 + 0x35 バイトc d.skelton.exe!winmaincrtstartup() 行 196c