任何人都可以解釋上述類型和一些示例用法之間的區別,以清楚地解釋兩者之間的區別嗎?BSTR和_bstr_t有什麼區別?
任何幫助將不勝感激! 注意:這個問題是從分拆this other question
任何人都可以解釋上述類型和一些示例用法之間的區別,以清楚地解釋兩者之間的區別嗎?BSTR和_bstr_t有什麼區別?
任何幫助將不勝感激! 注意:這個問題是從分拆this other question
BSTR是與COM一起使用的字符串數據類型。
_bstr_t是一個類似智能指針的包裝類,所以當變量被銷燬或超出範圍時,它將釋放分配的內存。 _bstr_t也具有引用計數,每次您通過值傳遞_bstr_t變量(避免不必要的副本)時會增加引用計數,並在不再使用時減少_bstr_t。每當所有引用都被銷燬時,爲該字符串分配的內存就被釋放。
一個替代BSTR的是CComBSTR。它還管理BSTR的內存,但沒有引用計數。
_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
http://msdn.microsoft.com/en-us/library/zthfhkd6(VS.71).aspx
BST R是原始指針,而_bstr_t
是封裝該指針的類。
與char *與std :: string相同。
+1實際提供鏈接 – 2012-05-23 19:12:08