2012-09-27 39 views
2
BSTR DoSOmething() 
{ 
    return L""; 
} 

或者可以將TCHAR *傳遞給以BSTR作爲輸入參數的API。BSTR和Strings

可以通過return語句將wchar_t字符串轉換爲BSTR,它會導致內存損壞嗎?

+0

查看BSTR和C字符串轉換指南http://www.codeproject.com/Articles/4829/Guide-to-BSTR-and-C-String-Conversions。 –

回答

4

不,這也不行,因爲某些API期待不只是一個WCHAR*指針,這BSTR也是,但附加一個真正BSTR指針與長度的信息。仍然可以通過這種方式進行演練,這可能會產生誤導。

有關BSTRs的一切:Eric's Complete Guide To BSTR Semantics

一個相關的從那裏報價:

2)BSTR必須分配並與SysAlloc的*家庭 功能中解脫出來。 PWSZ可以是堆棧 或分配malloc,new,LocalAlloc或任何其他內存分配器的自動存儲緩衝區。

3)BSTR的長度是固定的。 PWSZ的長度可以是任意長度,僅限於其緩衝區中有效內存的數量 。

4)BSTR始終指向緩衝區中的第一個有效字符。 A PWSZ可能是指向字符串緩衝區中間或末尾的指針。

+0

+1;優秀的鏈接 –