У меня есть следующий указатель:
BSTR *PREVIOUS;
И я хочу сделать новую копию для:
BSTR *NEW;
Я хочу скопировать СОДЕРЖАНИЕ / ДАННЫЕ (на которые указывает ПРЕДЫДУЩАЯ) с ПРЕДЫДУЩЕЙ на НОВУЮ.
Я только что попробовал следующую команду, но она не работает:
memcpy(NEW,PREVIOUS,SysStringByteLen(*PREVIOUS));
Я не вижу никакой ошибки при компиляции, потому что я работаю в среде ATL COM. Пожалуйста помоги. Спасибо!
BSTR
сам по себе уже указатель, вы должны почти всегда использовать просто BSTR
не BSTR*
(который является указателем на BSTR
). Обычно вы должны скопировать BSTR
с SysAllocString
:
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);
Других решений пока нет …