我有以下指針:如何一個緩衝區指針的內容複製到另一個
BSTR *PREVIOUS;
而且我希望做一個新副本:
BSTR *NEW;
我要複製的目錄/ DATA (以前指的是)從PREVIOUS到NEW。
我只是嘗試了下面的命令,但它不工作:
memcpy(NEW,PREVIOUS,SysStringByteLen(*PREVIOUS));
我沒有看到任何錯誤編譯,因爲我對ATL COM環境中工作。請幫忙。謝謝!
我有以下指針:如何一個緩衝區指針的內容複製到另一個
BSTR *PREVIOUS;
而且我希望做一個新副本:
BSTR *NEW;
我要複製的目錄/ DATA (以前指的是)從PREVIOUS到NEW。
我只是嘗試了下面的命令,但它不工作:
memcpy(NEW,PREVIOUS,SysStringByteLen(*PREVIOUS));
我沒有看到任何錯誤編譯,因爲我對ATL COM環境中工作。請幫忙。謝謝!
BSTR
本身已經是一個指針,你應該總是使用只是一個普通的BSTR
,不是BSTR*
(這是一個指向BSTR
)。通常情況下,你會複製BSTR
與SysAllocString
:
BSTR NEW = SysAllocString(PREVIOUS);
如果你真的有一個指向BSTR
(如通過函數的輸出參數),然後添加一個間接層:
BSTR *PREVIOUS = ...; // This must point to a valid BSTR
BSTR *NEW = ...; // This must also point to a valid BSTR
*NEW = SysAllocString(*PREVIOUS);
你能張貼一些代碼來證明這個問題嗎? – simonc
我只想製作一個緩衝區指針指向的內容的另一個副本。 –
我猜測與memcpy,我可能會複製數據內容的地址,但不知道它 –