数時間を実行した後、アプリケーションは新しいフォントオブジェクトの作成に失敗します。Win32でリソースリークを検出するにはどうすればよいですか?
CreateFontIndirect()はNULLを返します。
私はメモリリークを見つける方法を知っています(つまり、並列インスペクタまたは別のプロファイラを使用しています - そのほとんどはリーク検出を含みます)。しかし、どのように私はWin32でressourceリークを見つけることができますか?
数時間を実行した後、アプリケーションは新しいフォントオブジェクトの作成に失敗します。Win32でリソースリークを検出するにはどうすればよいですか?
CreateFontIndirect()はNULLを返します。
私はメモリリークを見つける方法を知っています(つまり、並列インスペクタまたは別のプロファイラを使用しています - そのほとんどはリーク検出を含みます)。しかし、どのように私はWin32でressourceリークを見つけることができますか?
GDI Viewのコピーを手に入れてください - この便利なツールは、フォント名やサイズなどの詳細を含めて、アプリケーションで使用されているすべてのGDIオブジェクトを表示できます。これは以前は非常に便利でした。
Win32アプリケーションの場合は、WTLフレームワークを参照することをお勧めします。これは、GDIオブジェクトを軽量なC++クラスでラップし、オブジェクトの削除を処理します。
はい、これは非常に良いツールのようです。驚くほど小さな。わずか50kBのジップ。ありがとう。 –
あなたはまた、クリーナーを使用することができます。それはパワーツールです! –
MSDNの記事のように見えます。Resource Leaks: Detecting, Locating, and Repairing Your Leaky GDI Code(via archive.org)の回答が表示される場合があります。
記事はいいですね。しかし、言及されたツールはリンクされていません - どこでも見つけることができません。 –
BoundsCheckerがある場合、メモリリークに加えてリソースリークも追跡されます。
チップをありがとう - 私はBoundsCheckerを持っていたかつてこれまで最高のツールでした。 CompuwareはBoundsCheckerを買収して以来、最初のライセンス(約15年前)以来、品質は継続的に低下しました。開始直後に終了し、最近x64システム全体が停止しました。 Compuware DevPartner(BoundsCheckerの後継者)は、まだ64ビットソフトウェアを分析することができません。 –
まず、GDIハンドルリークがあることを確認します。タスクマネージャのGDIハンドル列を確認します。 – Michael