初めての投稿です、稚拙な文章ですがご容赦ください。
まだプログラミング初心者ですので、間違いがあればご指摘いただきたいです。
VisualStudioでゲーム制作をしていて、シェーダー周りのプログラミングをしている人は一度は下の画像ような状況になったことがあると思います。
↓これはComPtrでメモリーリークが起きた際の出力ログです。
ComPtrとは、ShaderResourceViewなどを扱う用のunique_ptrみたいな物です。
こういったComPtrのメモリーリークはエラーは出ないわ、出力ログにヒントは出ないわで特定が難しいですよね。
そういうことで、もし今後ComPtrでメモリーリークが起きた際にどういった原因が考えられるのか
自分用にメモしていきたいと思います。
1.生成(登録)の上書き
同じComPtrオブジェクトに複数回 生成している
同じオブジェクトに複数回生成する場合は生成する前にRelease()しておかないといけない。
以下の画像の様に、ComPtrのAttachメソッドを使う必要があります。
2.デストラクタの書き忘れ
クラスにメンバ変数としてComPtrを持たせている場合、デストラクタを定義しておかないとメモリーリークが発生する(何故かはわからない)。
今のところ私が遭遇した原因は以上です。(2個しか書けず申し訳ないです)
また新しい原因に遭遇したら追加していきたいと思います。
(メモリーリークに遭遇しないように気を付けます)