3

VS2008、C。いくつかのビルド済みライブラリも使用しています。デバッガーでコードをステップ実行し、呼び出されているライブラリ関数をステップスルーすると、次のようになります。

HEAP [unit_test.exe]:35c70付近のコミットされた範囲の最後のエントリがヒープにないWindowsがunit_test.exeのブレークポイントをトリガーしました。

これは、ヒープの破損が原因である可能性があります。これは、unit_test.exeまたはロードされたDLLのいずれかにバグがあることを示しています。

これは、unit_test.exeにフォーカスがあるときにユーザーがF12キーを押したことが原因である可能性もあります。

出力ウィンドウには、より多くの診断情報が表示される場合があります。

これをデバッグする方法について何かアイデアはありますか?

更新:コードをリファクタリングし、printf()を実行するとポップアップが表示されることを確認しました。free()があるときにも取得します。これらの行をコメントアウトしましたが、malloc()があると、ヒープ破損ポップアップダイアログが表示されます。

4

1 に答える 1

4

まず、ApplicationVerifierを使用してヒープの破損をテストすることをお勧めします。Application Verifierは、リソースリークとヒープの破損を特定するのに役立つMicrosoftの無料ツールです。App Verifierは、次のURLにあります。http://www.microsoft.com/en-us/download/details.aspx?displaylang = en&id = 20028ヒープの破損などに対して有効にする方法については、http:を参照してください。 //technet.microsoft.com/en-us/library/bb457063.aspx

多くの場合、このような状況で役立ちます。

于 2012-08-02T18:38:02.020 に答える