• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:_CrtCheckMemoryのエラーについて)

_CrtCheckMemoryのエラーについて

このQ&Aのポイント
  • 現在、あるプログラムのヒープ破壊と思われるエラーで悩んでおり、VC++のヒープチェック機能でデバッグしようとしています。
  • ちょっと摘み食いするだけのつもりでしたので、GNUMAKEをそのまま使ってコンパイルしているのですが、なぜかヒープ破壊の検出がうまくいかないようです。
  • どなたか、ご教授願います。環境は、Win7 Home 32bit、visual studio community 2017、Mingw

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

  • ベストアンサー
  • myuki1232
  • ベストアンサー率57% (97/170)
回答No.1

やりたいことは、最後の行の _ASSERTE で止まって、その行数・ファイル名を表示してほしいということでしょうか? でしたら、原因は _CrtSetDbgFlag に _CRTDBG_CHECK_ALWAYS_DF フラグを指定していることです。 _CRTDBG_CHECK_ALWAYS_DF フラグを指定していると、メモリの確保・開放時に常に _CrtCheckMemory のチェックをするため、 _ASSERTE の前の _tprintf(_T("メモリ破壊終了\n")); の中で行われているヒープ確保・開放処理で止まってしまいます。 もし _CRTDBG_CHECK_ALWAYS_DF フラグを使うのであれば、VC++ のデバッガや windbg を使ってスタックトレースなどから発生箇所を追跡できるようにすべきでしょう。

kolona
質問者

お礼

ありがとうございます。 道理で、わけのわからないライブラリでエラーを検出するわけですね・・・ フラグの意味を完全に誤解していました。 問題の位置を特定できました。

関連するQ&A