- ベストアンサー
C言語初心者です。debug assertion errorについて質問です。
VC6.0を使用しています。先ほどプログラムを実行したらエラーを起こしました。エラー内容は下に書きました。 Debug Assertion Failed File dbgheap.c Line 1011 Expression _CrtIsValidHeapPointer(pUserData) たぶんなんですけど、callocでのメモリ確保が原因だと思います。 c言語初心者なのでここからどのようにするべきかがよくわかりません。解決方法を教えていただければ幸いです。
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
>たぶんなんですけど、callocでのメモリ確保が原因だと思います。 ポインタが不正なアドレスを指したままメモリに書き込んだ、配列の添え字が要素数を超えたまま、配列の添え字が負数になったままメモリに書き込んだ、などでヒープメモリをグチャグチャに破壊しているのでしょう。 ヒープメモリをグチャグチャに破壊した状態でcalloc、realloc、malloc、free等のヒープメモリを操作する関数を呼べば「ヒープのポインタが不正だ」との例外エラーが出ます。 なので、悪いのはcallocではなく、callocを行う前にメモリに書き込んでいる部分です。 多分、ポインタや配列を使用してメモリアクセスしている部分を「すべてチェック」しないとバグは取れないでしょう。
お礼
返信が遅れてすいません。おかげで解決することができました。ありがとうございました。