我有以下指针:
BSTR *PREVIOUS;
Run Code Online (Sandbox Code Playgroud)
我想制作一份新副本:
BSTR *NEW;
Run Code Online (Sandbox Code Playgroud)
我想将PREOUT/DATA(PREVIOUS指向的)从PREVIOUS复制到NEW.
我刚刚尝试了以下命令,但它不起作用:
memcpy(NEW,PREVIOUS,SysStringByteLen(*PREVIOUS));
Run Code Online (Sandbox Code Playgroud)
编译时我没有看到任何错误,因为我正在ATL COM环境中工作.请帮忙.谢谢!
BSTR
它本身已经是一个指针,你几乎应该只使用一个普通的BSTR
,而不是一个BSTR*
(它是一个指向a的指针BSTR
).通常情况下,你会复制BSTR
与SysAllocString
:
BSTR NEW = SysAllocString(PREVIOUS);
Run Code Online (Sandbox Code Playgroud)
如果你确实有一个指向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);
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
970 次 |
最近记录: |