• ベストアンサー

C言語初心者です。debug assertion errorについて質問です。

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

質問者が選んだベストアンサー

  • ベストアンサー
  • chie65535
  • ベストアンサー率43% (8523/19372)
回答No.1

>たぶんなんですけど、callocでのメモリ確保が原因だと思います。 ポインタが不正なアドレスを指したままメモリに書き込んだ、配列の添え字が要素数を超えたまま、配列の添え字が負数になったままメモリに書き込んだ、などでヒープメモリをグチャグチャに破壊しているのでしょう。 ヒープメモリをグチャグチャに破壊した状態でcalloc、realloc、malloc、free等のヒープメモリを操作する関数を呼べば「ヒープのポインタが不正だ」との例外エラーが出ます。 なので、悪いのはcallocではなく、callocを行う前にメモリに書き込んでいる部分です。 多分、ポインタや配列を使用してメモリアクセスしている部分を「すべてチェック」しないとバグは取れないでしょう。

kankan2009
質問者

お礼

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

関連するQ&A

  • ドライブを右クリックするとエラーになる?

    マイコンピュータを開いた後に、C:やD:などの、容量や中身を確認しようと思い、アイコンを右クリックをするとエラーが出て画面が閉じてしまうのですが? エラー画面が出てきてしたのようなメッセージが表示されます。 Debug Assertion Failed Program: C:\WINDOS\exploer.exe File:dbgheap.c Line:1011 Expression:_CrtIsValidHeapPointer(pUserData) For information on how your program can cause an assertion failure see the Visual C++ docummentation on asserts と表示されるのですが、何が原因なのでしょうか?

  • Debug Assertion Failed?

    プログラムを実行したら、 Debug Assertion Failed Expressin:(stream!=NULL) For information on how your program can cause an assertion failure, see the Visual C++ documentation asserts. (Press Retry to debug the application) と表示されるエラーが発生しました。(添付画像参照) エラーの対処方法がわかりません。 ご存知の方がいたら教えていただけないでしょうか? なお、プログラムでは複数のバイナリーデータから必要な情報を抽出、計算して、各バイナリーデータごとにCSVファイルにデータを出力していました。 また、特定のファイルでエラーが発生するわけではありません。 よろしくお願いします。

  • マイコンピュータでドライブの右クリックができない

    マイコンピューターのAとかCとかのドライブを右クリックすると、今までだと、フォーマットやプロパティなどの メニューが出ていましたが、赤丸に白色のX印がついた、以下のような表示が出るようになりました。 ------------------------------------------------------------ Debug Assertion Failed! Program: C:\WINDOWS\explorer.exe File: dbgheap.c Line: 1011 Expression _CrtIsValidHeapPointer(pUserData) For information on how your program can case an assertion failure,see the Visual C++ documentation on asserts. (Press Retry too debug the application) [中止(A)] [再試行(R)] [無視(I)] --------------------------------------------------------- フロッピーをフォーマットしようとして、こうなりました。ドライブ以外のフォルダなどは従来通り右クリックできます。 どなたかお教え願えないでしょうか。宜しくお願いします。

  • Debug Assertion Failed

    パソコンを今朝起ちあげたら Debug Assertion Failed Program: \controlhandler.cpp Line: 102 visual C++ documentation on assert と出ました。 以来デスクトップのタスクバーやスタートボタンのデザインが変わっていたり、 インターネットにアクセスできなくなったりと、困っています。 パソコン初心者です。 どうか助言を頂けたら幸いです。

  • Microsoft Visual C++ Runtime Library Assertion failedのエラーについて教えてください。

    Microsoft Visual C++ Runtime Library Assertion failedのエラーについてですが、ある時フォルダを開けて約5秒くらいするとこのエラーが必ず発生します・・・。 内容は Assertion failed!   Program:C\WINDOWS\explorer.exe File.../external/boost_1_31_0\boost/shard_ptr.hpp Line:254 Expression:px !=0 For information on how your program can cause an assertion failure,see the Visual C++ documentation on asserts (Press Retry to debug the application - JIT must be enabled) といったエラーがでてきます。全くわたくしじゃ意味もわからずどーしたらいいかわかりませんのでお力お貸しください。宜しく御願い致します。

  • デバッグエラー

    今晩和 VC++2005を使ってプログラムを開発しているのですが、デバッグ時に以下のエラーボックスが表示されます Debug Assertion Failed! Program: ... File: mbstowcs.c Line: 69 Expression: s!=NULL For information on how your program can cause an assertion failure, see the Visual C++ documentation on asserts. コンパイルまでは問題なく出来るのですが・・・・ 原因不明でかなりまいっています 御教授お願いします 環境 WindowsXP SP3 Visual Studio 2005 アカデミー サンプルプログラム:http://chihara.naist.jp/people/STAFF/imura/products/labeling内のwindows用サンプル一式

  • Debug Assertion failed

    VC++のSQL Server 2008 の処理中に、 Debug Assertion failed のエラーが発生します。 落ちている場所は、dbcore.cpp の中です。 デバッグトレースを見る限り、下記ソースの2回目のrs2.Open らしいところまで辿りましたが、 なぜ、2回目のrs2.Open で落ちるかの原因がわかりません。 CString strCon2="DSN=MAC3DB_DS;"; db2.OpenEx( _T( strCon2 ), CDatabase::noOdbcDialog ); CRecordset rs2( &db2 ); while(end_sw==0) { try{ rs2.Open( CRecordset::forwardOnly, _T("select * from mac3data where read_flg = 0 order by seq") ); while( !rs2.IsEOF() ) { for(int index = 0; index <= rs2.GetODBCFieldCount(); index++ ) { switch(index) { case 1 : rs2.GetFieldValue("seq", _T(str_seq));break; 中略 } 中略 rs2.MoveNext(); } }catch(...){} } }

  • occmgr.cppの行410で特定のエラー

    .Net2003で作成したプロジェクトを実行しようとするとoccmgr.cppの行410で特定のエラーが出て実行できません。以下が特定のエラーの内容です。 Debug Assertion Failed!! File occmgr.cpp Line 410 For information on how your program can cause an assertion failure, see the Visual C++ documentation on asserts. どうすればいいかわかりません。 よろしくお願いします。

  • #ifdef _DEBUGが効かない

    こんにちは。 Win2000、VC++6.0使用。 今までC言語でプログラムを組んではいましたが、 #define _DEBUG #ifdef _DEBUG print(...); #endif というようにデバッグ用のコードを入れたことはありませんでした。 このような便利なものがあると知り、早速使ってみたのですが、 #define _DEBUG の一文をコメントアウトして、再コンパイル(リビルド) して実行してみたのですが、 普通に #ifdef _DEBUG #endif で囲まれた部分が実行されてしまいます。 #define _DEBUG を宣言しなければ、実行されないと思っていたのですが 自分の勘違いでしょうか? よくわかりません。 どなたかご存知の方、よろしくお願いします。

  • 右クリックするとエラーが・・・

    Windows XP Home Editionを使っていますが、いつの間にか「マイコンピュータ」のFDドライブ, HDD, 外付HDD等を右クリックした際、下記のエラーが発生しプロパティ等のメニューが表示されなくなってしまいました。何かよい解決方法がありましたら教えてください。お願いします。 エラー詳細↓↓↓ Debug Assertion Failed Program: C\WINDOWS\explorer.exe file: dbgheap.c line: 1011 Expresstion:_CrtIsValidHeapPointer(pUser Date) _BLOCK_TYPE_IS_VALID(pHead->nBlockUse) For infomation on how your program can cause on assertion failure see the Visual C++ documentation on asserts.

専門家に質問してみよう