dポイントプレゼントキャンペーン実施中!

VC6.0を使用しています。先ほどプログラムを実行したらエラーを起こしました。エラー内容は下に書きました。
Debug Assertion Failed
File dbgheap.c
Line 1011
Expression _CrtIsValidHeapPointer(pUserData)
たぶんなんですけど、callocでのメモリ確保が原因だと思います。
c言語初心者なのでここからどのようにするべきかがよくわかりません。解決方法を教えていただければ幸いです。

A 回答 (1件)

>たぶんなんですけど、callocでのメモリ確保が原因だと思います。



ポインタが不正なアドレスを指したままメモリに書き込んだ、配列の添え字が要素数を超えたまま、配列の添え字が負数になったままメモリに書き込んだ、などでヒープメモリをグチャグチャに破壊しているのでしょう。

ヒープメモリをグチャグチャに破壊した状態でcalloc、realloc、malloc、free等のヒープメモリを操作する関数を呼べば「ヒープのポインタが不正だ」との例外エラーが出ます。

なので、悪いのはcallocではなく、callocを行う前にメモリに書き込んでいる部分です。

多分、ポインタや配列を使用してメモリアクセスしている部分を「すべてチェック」しないとバグは取れないでしょう。
    • good
    • 0
この回答へのお礼

返信が遅れてすいません。おかげで解決することができました。ありがとうございました。

お礼日時:2009/02/04 23:41

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!


このQ&Aを見た人がよく見るQ&A