Direct3D 10アプリケーションを作成していて、COMオブジェクトが漏れていないことを確認したい。Ref-counted COMオブジェクト(リリースなしのAddref)でメモリリークを検出する
はい、CComPtrでインターフェイスをラッピングしていますが、RAIIとスマートポインタによってリークがないことが保証されているにもかかわらず、通常のヒープ割り当てリークディテクタを使用しているのと同じ理由でリークチェックが必要です(特にDirect3DのようなCライブラリに接続する場合)、抽象度の低いレベルにフォールバックし、生ポインタ、新規、削除を使用し、間違いを犯さなければなりません。 (Releaseの呼び出しの中には、プログラムの終わりに0を返さないものもあります)
atlbase.hをインクルードする前に#define _ATL_DEBUG_INTERFACESを定義しましたが、出力ウィンドウに何も表示されません! _ATL_DEBUG_INTERFACESを動作させるために何か必要なことはありますか?
私はCOM関連の解決策はわかりませんが、Direct3Dではデバッグバージョンを使用できます。私が思い出す限り、これは出力ウィンドウのメモリリークについて教えてくれます。 – JPW
デバッグモードで通常のヒープ割り当てメモリのメモリリークを報告していますが、リークした場合はリークしたCOMオブジェクトは報告されません。 – jeffythedragonslayer
ここで同じことを話しているかどうかはわかりません。 http://msdn.microsoft.com/en-us/library/ee416791(v=vs.85)を参照してください。aspx Direct3D 9のデバッグバージョンに切り替えると(新しいバージョンではもっと複雑になるでしょう)、私は未処理のDirect3Dメモリについて多くの情報を得ています。 – JPW