2

画像を圧縮するためにオープン ソースの C++ 圧縮ライブラリを使用している .NET アプリケーションがあります。マネージド C++ 経由で C++ ライブラリにアクセスしています。圧縮中にヒープの破損が見られます。_CrtIsValidHeapPointer への呼び出しは、圧縮後のクリーンアップ時に free() への呼び出しでエラーを検出しています。

この問題の診断に役立つPurifyなどのツールはありますか? また、マネージ コードとアンマネージ コードを組み合わせて作業しているときにヒープ破損の原因となっているものはありますか? デバッガーで例外をキャッチしましたが、問題の解決策を見つけるのに役立つ他のツールがあると便利です。

4

3 に答える 3

1

*nixには、メモリ リークやメモリ破損などのメモリの問題を処理するために使用するValgrindというツールがあります。

于 2008-08-29T18:40:35.020 に答える
1

ネイティブ コードでは、破損が常にメモリ内の同じ場所で発生する場合は、データ ブレークポイントを使用して、そのメモリが変更されたときにデバッガーを中断できます。残念ながら、マネージ C++ 環境でデータ ブレークポイントを設定することはできません。おそらく、GC がメモリ内のオブジェクトを移動する可能性があるためです。

これが役立つかどうかはわかりませんが、うまくいけば、正しい方向に進むことができます.

于 2008-08-29T19:58:37.720 に答える
0

Rational Purify for Windowsは .NET をサポートしているので、それを使用できると思います。

于 2008-08-29T18:40:03.600 に答える