2

我有以下指针:

BSTR *PREVIOUS;

我想制作一个新副本到:

BSTR *NEW;

我想将 CONTENTS/DATA(PREVIOUS 指向的)从 PREVIOUS 复制到 NEW。

我刚刚尝试了以下命令,但它不起作用:

memcpy(NEW,PREVIOUS,SysStringByteLen(*PREVIOUS));

我在编译时没有看到任何错误,因为我正在使用 ATL COM 环境。请帮忙。谢谢!

4

1 回答 1

5

BSTR本身已经是一个指针,你应该几乎总是只使用一个 plain BSTR,而不是 a BSTR*(它是一个指向 a 的指针BSTR)。通常,您将复制 a BSTRwith 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);
于 2012-10-09T15:27:44.613 回答