CComSafeArray MultiDimSetAt是否复制了引用元素?

时间:2010-02-24 21:24:22

标签: c++ visual-studio com visual-c++ atl

CComSafeArray::SetAt method提供了一个参数来控制是否复制引用的变量:

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

...但CComSafeArray::MultiDimSetAt method不提供相同的参数:

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

两个问题:

1。)是否有理由在MultiDim方法中未提供此选项?

2。)文档没有指定是否复制引用的变量。它被隐含地复制了吗?

(在我的情况下,我希望它被复制,因为它是VARIANT类型的临时包装,可以是'在将其设置到数组后分离'

1 个答案:

答案 0 :(得分:0)

内部MultiDimSetAt使用SafeArrayPutElement函数。 这意味着将复制BSTR并且对象将是AddRef'ed。