Делает ли CComSafeArray MultiDimSetAt копию ссылочного элемента?

метод CComSafeArray::SetAt предоставляет параметр для управления тем, копируется переменная:

HRESULT SetAt(
LONG lIndex,
const T& t,
BOOL bCopy = TRUE
);

... но метод CComSafeArray::MultiDimSetAt не предлагает тот же параметр:

HRESULT MultiDimSetAt(
const LONG * alIndex,
const T& t 
);

Два вопроса:

1.) Есть ли причина, по которой эта опция не предлагается в методе MultiDim?

2.) В документах не указано, копируется ли указанная переменная. Копируется неявно?

(В моем случае я бы хотел, чтобы он не копировался, так как это временная оболочка для типа VARIANT, которую можно «отсоединить» после установки в массив)


person Adam Holmberg    schedule 24.02.2010    source источник


Ответы (1)


Внутри MultiDimSetAt использует функцию SafeArrayPutElement. Это означает, что BSTR будут скопированы, а объекты будут добавлены в AddRef.

person Andrey    schedule 24.02.2010