Создает ли CComSafeArray MultiDimSetAt копию ссылочного элемента? - PullRequest
1 голос
/ 25 февраля 2010

Метод 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, которая может иметь значение «Detach'd» после установки его в массив)

1 Ответ

0 голосов
/ 25 февраля 2010

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

...