1

_com_ptr_t メンバを持つ C++ クラスで、最初に Release() を実行せずに CreateInstance() を同じポインタで繰り返し使用して COM オブジェクトの新しいインスタンスを取得すると、メモリ リークが発生しますか? これらのスマート ポインターの 1 つがスコープ外になると参照カウントが減少し、カプセル化されたポインターが Detach() された場合は減少しないことが十分に文書化されています。MSDN は、CreateInstance() を繰り返すときの参照カウントの意味について言及していないようです。

4

2 に答える 2

5

実装を読むことで簡単に自分自身を確認できる最初の_com_ptr_t呼び出しなので、リークは発生しません。Release()CreateInstance()_com_ptr_t

于 2011-09-02T13:58:34.513 に答える
0

CreateInstance() は、CoCreateInstance() を呼び出す前に _Release() を呼び出します。内部の実装を参照してください。

于 2016-05-17T14:16:37.683 に答える