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类型的临时包装,可以是'在将其设置到数组后分离'
答案 0 :(得分:0)
内部MultiDimSetAt使用SafeArrayPutElement函数。 这意味着将复制BSTR并且对象将是AddRef'ed。