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