SysAllocString () из документации ведет себя так:
Эта функция выделяет новую строку
и копирует переданную строку в нее.
Так что, да, после вызова SysAllocString вы можете освободить свой исходный массив символов, так как данные были скопированы во вновь выделенный BSTR.
Правильный способ освободить строку wchar_t
, выделенную с помощью new[]
, - использовать delete[]
.
wchar_t *hs = new wchar_t[20];
...
delete[] hs;
Правильный способ освобождения BSTR
- с помощью SysFreeString () :
BSTR bs = SysAllocString(hs);
...
SysFreeString(bs);
Пока вы новичок в BSTR, вам следует прочитать Полное руководство Эрика по семантике BSTR .