Каково различие между BSTR и _bstr_t?

19
задан Community 23 May 2017 в 12:33
поделиться

3 ответа

BSTR является типом данных String, используемым с COM.

_bstr_t является классом обертки, который работает как интеллектуальный указатель, таким образом, он освободит выделенную память, когда переменная будет уничтожена или выходит из объема. _bstr_t также имеет подсчет ссылок, который увеличивается каждый раз, когда Вы передаете _bstr_t переменную значением (избегающий ненужной копии) и декремент, когда это больше не используется. Каждый раз, когда все ссылки уничтожаются, выделенная память для строки освобождена.

альтернативой BSTR является CComBSTR. Это также управляет памятью для BSTR, но не имеет никакого подсчета ссылок.

21
ответ дан 30 November 2019 в 03:03
поделиться

BSTR является необработанным указателем, в то время как _bstr_t класс, инкапсулирующий тот указатель.

Это - то же различие как символ* по сравнению с станд.:: строка .

13
ответ дан 30 November 2019 в 03:03
поделиться

_bstr_t переносит тип BSTR. Так, при инстанцировании _bstr_t Вы также создаете BSTR. _bstr_t просто оборачивает все для Вас и вида действий подобных "умный ptr" к BSTR.

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

10
ответ дан 30 November 2019 в 03:03
поделиться
Другие вопросы по тегам:

Похожие вопросы: