先日はスマートポインタについて教えてくださって、ありがとうございました。
今日、早速、_com_ptr_tを導入してみたのですが、疑問があります。

_com_ptr_t<_com_IIID<IDirect3D9, &IID_IDirect3D9 >> m_pD3D;

で、実際にDirect3D9オブジェクトを取得するとき、

m_pD3D = Direct3DCreate9( D3D_SDK_VERSION );

でも、エラーやメモリリークの警告なく動きましたが、以下のようにAttachメソッドを使って、

m_pD3D.Attach( Direct3DCreate9( D3D_SDK_VERSION ) );

としても同様でした。

これってどちらでも同じということですか??
だとすると、Attachの存在意義というのは何なんでしょう??