上記のタイプの違いと、2つの違いを明確に説明するためのサンプル使用法を説明できる人はいますか?
どんな助けでも大歓迎です!注:この質問は、この他の質問からのスピンオフです
上記のタイプの違いと、2つの違いを明確に説明するためのサンプル使用法を説明できる人はいますか?
どんな助けでも大歓迎です!注:この質問は、この他の質問からのスピンオフです
BSTRは、COMで使用される文字列データ型です。
_bstr_tは、スマートポインターのように機能するラッパークラスであるため、変数が破棄されたりスコープ外になったりしたときに、割り当てられたメモリを解放します。_bstr_tには参照カウントもあります。これは、_bstr_t変数を値で渡すたびに増加し(不要なコピーを回避)、使用されなくなったときにデクリメントします。すべての参照が破棄されるたびに、文字列に割り当てられたメモリが解放されます。
BSTRの代わりにCComBSTRがあります。また、BSTRのメモリも管理しますが、参照カウントはありません。
BSTRは生のポインタであり、_bstr_t
はそのポインタをカプセル化するクラスです。
これは、 char*とstd ::stringの違いと同じです。
_bstr_tはBSTRタイプをラップします。したがって、_bstr_tをインスタンス化すると、BSTRも作成されます。_bstr_tは単にすべてをまとめて、BSTRに対する「スマートptr」のように機能します。
BSTR
http://msdn.microsoft.com/en-us/library/ms221069.aspx
SysAllocString()
http://msdn.microsoft.com/en-us/library/ms891285.aspx
_bstr_t