BSTR和字符串

时间:2012-09-27 10:32:07

标签: string visual-c++ com bstr

BSTR DoSOmething()
{
   return L"";
}

OR是否可以将TCHAR *传递给采用BSTR作为输入参数的API。

是否可以通过return语句将wchar_t字符串转换为BSTR。是否会导致内存损坏?

1 个答案:

答案 0 :(得分:5)

不,这不合适,因为有些API不仅需要WCHAR*指针,BSTR也是{1}}指针,而是附加长度信息的真实BSTR指针。仍然以这种方式投射可能会很好,这可能会产生误导。

关于BSTR的一切:Eric's Complete Guide To BSTR Semantics

来自那里的相关引言:

  

2)必须使用SysAlloc *系列分配和释放BSTR   功能。 PWSZ可以是堆栈中的自动存储缓冲区   或者使用malloc,new,LocalAlloc或任何其他内存分配   分配器。

     

3)BSTR具有固定长度。 PWSZ可以是任何长度的,有限的   只能通过其缓冲区中的有效内存量。

     

4)BSTR始终指向缓冲区中的第一个有效字符。一个   PWSZ可以是指向字符串缓冲区中间或末尾的指针。