Официальный сайт студ.городка НГТУ
Программирование и БД » [c++] VARIANT и SAFEARRAY 

#1  03.01.10 18:03

ZiF
Профиль

[c++] VARIANT и SAFEARRAY

в метод компонента входным параметром приходит SAFEARRAY в виде:
STDMETHODIMP CMyCoClass::MyMethod(VARIANT vtArr, ...)
{

....

SafeArrayDestroy(vtArr.parray);   <-- Надо ли вот тут самому руками удалять то что пришло в vtArr ?
VariantClear(&vtArr);

return S_OK;
}

Offline

#2  04.01.10 02:50

Re: [c++] VARIANT и SAFEARRAY

1) If the vt field has the VT_ARRAY bit set, the array is freed.
2) The array descriptor is never accessed directly, but instead is read and modified using the functions described in Conversion and Manipulation Functions.

http://msdn.microsoft.com/en-us/library/ms221165.aspx

Исправлено Смайлек (04.01.10 02:50)

Offline

#3  04.01.10 16:15

ZiF
Профиль

Re: [c++] VARIANT и SAFEARRAY

ага, спасибо.

Offline

#4  05.01.10 12:43

$up
Профиль

Re: [c++] VARIANT и SAFEARRAY

также не стоит забывать, что есть замечательные обертки COleVariant и COleSafeArray

Offline

#5  07.01.10 11:44

ZiF
Профиль

Re: [c++] VARIANT и SAFEARRAY

а разве ATL/MFC обертки не создают глубоких копий исходного VARIANT-а?

вообще как-то странно получается, в метод приходит копия варианта, но делать с ней мы ничего не должны...

Offline

#6  07.01.10 14:27

$up
Профиль

Re: [c++] VARIANT и SAFEARRAY

Обертка упрощает работу с объектом.
А вообще об удалении объекта должен заботится тот кто их создал, за исключением особых случаев.

Offline

Программирование и БД » [c++] VARIANT и SAFEARRAY 

ФутЕр:)

© Hostel Web Group, 2002-2025.   Сообщить об ошибке

Сгенерировано за 0.028 сек.
Выполнено 14 запросов.