Я считаю, что трудно найти четкие примеры, которые бы объяснить, как читать COleSafeArray
...Как читать COleSafeArray эффективно
Так у меня есть объект, который возвращает через функцию участницы _variant_t
, что на самом деле является COleSafeArray
. Я хочу прочитать его элемент и убедиться, что я не утечка памяти ...
Вот пример кода примера. Я просто пытаюсь прочитать элемент ifrst массива, который, как я полагаю, длинный. В массиве больше данных.
class ExampleObject
{
_variant_t GetArray();
};
//...
long Read(ExmapleObject* ptr)
{
COleSafeArray the_array = ptr->GetArray();
VARIANT value_temp;
VariantInit(&value_temp);
long index = 0;
the_array.GetElement(&index, &value_temp);
long my_result = value_temp.lVal;
return my_result;
}
В этом коде есть что-то неправильное, что может привести к утечке памяти?
Да, если массив не содержит вариантов правильного типа, вы получите значение мусора и пропустите элемент. Проверьте value_temp.vt и используйте VariantClear() для освобождения памяти. –
так что о 'COlseSafeArray' функции' Destroy' 'DestroyData'' DestroyDescriptor' и 'Clear'? Также какие типы требуют вызова 'VariantClear'? – Arthur
@jules: не забудьте наградить Романа R – Goz