Как скопировать содержимое одного указателя буфера в другой

У меня есть следующий указатель:

BSTR *PREVIOUS;

И я хочу сделать новую копию для:

BSTR *NEW;

Я хочу скопировать СОДЕРЖАНИЕ / ДАННЫЕ (на которые указывает ПРЕДЫДУЩАЯ) с ПРЕДЫДУЩЕЙ на НОВУЮ.

Я только что попробовал следующую команду, но она не работает:

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

Я не вижу никакой ошибки при компиляции, потому что я работаю в среде ATL COM. Пожалуйста помоги. Спасибо!

1

Решение

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);
5

Другие решения

Других решений пока нет …