22

上記のタイプの違いと、2つの違いを明確に説明するためのサンプル使用法を説明できる人はいますか?

どんな助けでも大歓迎です!注:この質問は、この他の質問からのスピンオフです

4

3 に答える 3

27

BSTRは、COMで使用される文字列データ型です。

_bstr_tは、スマートポインターのように機能するラッパークラスであるため、変数が破棄されたりスコープ外になったりしたときに、割り当てられたメモリを解放します。_bstr_tには参照カウントもあります。これは、_bstr_t変数を値で渡すたびに増加し(不要なコピーを回避)、使用されなくなったときにデクリメントします。すべての参照が破棄されるたびに、文字列に割り当てられたメモリが解放されます。

BSTRの代わりにCComBSTRがあります。また、BSTRのメモリも管理しますが、参照カウントはありません。

于 2008-12-05T11:40:36.890 に答える
15

BSTRは生のポインタであり、_bstr_tはそのポインタをカプセル化するクラスです。

これは、 char*とstd ::stringの違いと同じです。

于 2008-12-04T17:57:40.063 に答える
11

_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

https://msdn.microsoft.com/en-us/library/zthfhkd6.aspx

于 2008-12-04T17:57:06.663 に答える