0

メモリ ヒープの破損エラーを追跡しています。私が持っているのは、解放された後に変更されたとされるメモリアドレスだけです。Windows は基本的に終了時にブレークポイントをトリガーし、出力ウィンドウに次のようなエラー メッセージが表示されます。

HEAP[myprogram.exe]: HEAP: Free Heap block df56c20 modified at df56c80 after it was freed 

私の質問は、Windows がブレークポイントをトリガーする正確なポイントにあります。このアドレスに関連付けられたデータに対応するコード内のポイントまでさかのぼることはできますか? それは少なくともこれをデバッグするのに役立ちます。どうすればこれを行うことができるかについてのアイデアに感謝します。http://msdn.microsoft.com/en-us/library/s3aw423e.aspxを読み ましたが、どうすればやりたいことを実行できるかはあまり明確ではありませんでした。ありがとう!

4

2 に答える 2

1

メモリアドレスにブレークポイントを設定できます。ブレークポイント ウィンドウに移動して、新しいデータ ブレークポイントを追加するだけです。これは、実行ごとに同じアドレスで破損が発生している場合に役立ちます。

ただし、このような問題の場合、問題は別の場所にある可能性が高くなります。一般的な原因は、未定義の動作に起因します。探す:

  • 二重削除
  • 関数から戻らない
  • 配列の境界を超えています
  • 所有していないメモリへの書き込み
于 2012-06-15T22:47:56.590 に答える
0

Application Verifierを使用して PageHeap を有効にします。これは、メモリが破損するとすぐにデバッガーに侵入します。

于 2012-06-16T20:06:28.597 に答える