我有以下指针:
BSTR *PREVIOUS;
我想制作一份新副本:
BSTR *NEW;
我想将PREOUT / DATA(PREVIOUS指向的)从PREVIOUS复制到NEW。
我刚刚尝试了以下命令,但它不起作用:
memcpy(NEW,PREVIOUS,SysStringByteLen(*PREVIOUS));
编译时我没有看到任何错误,因为我正在处理ATL COM环境。请帮忙。谢谢!
答案 0 :(得分:5)
BSTR
本身已经是一个指针,你应该几乎总是只使用普通的BSTR
,而不是BSTR*
(这是指向BSTR
的指针)。通常,您会使用SysAllocString
复制BSTR
:
BSTR NEW = SysAllocString(PREVIOUS);
如果你确实有一个指向BSTR
的指针(例如通过函数的out参数),那么你添加了一个间接层:
BSTR *PREVIOUS = ...; // This must point to a valid BSTR
BSTR *NEW = ...; // This must also point to a valid BSTR
*NEW = SysAllocString(*PREVIOUS);