簡単な紹介:
私は win32 アプリケーションをリファクタリングしています。私は VS 2008 を使用しています。アプリケーションは、私自身の dll とサードパーティの dll の両方で構成されています。
問題:
アプリケーションをデバッグ モードで実行し、何らかのアクションを実行すると、エラーが発生します: アプリケーション プログラムがブレークポイントをトリガーしました。ヒープが壊れています。
実行されたアクション:
インターネットを検索したところ、このエラーは、プロジェクト内のdll に異なるビルド フラグ (マルチスレッド デバッグ/MD
およびマルチスレッド デバッグ dll ) が使用されたことが原因である可能性があることがわかりました (その結果、異なる C ランタイム ライブラリを使用することになります)。/MDd
ライブラリごとに、メモリを操作するための独自のリストが維持されるため、ヒープの破損につながる可能性があります)。私は自分の dll をチェックしました - それらはすべて同じフラグを持っています: マルチスレッド dll をデバッグします。したがって、サードパーティの DLL の 1 つがマルチスレッド デバッグ フラグを使用してビルドされた可能性があると思います。
質問:
- サードパーティのライブラリがどのフラグで構築されたかを調べることは可能ですか?もしそうなら、どうすればいいですか?
- さまざまなビルドフラグの問題をどのように分類できますか?
- そのエラーについての私の推測は、異なるビルド フラグによるものですか?