使用CComSafeArray的一个最大的好处,就是它会自动释放元素是VARIANT和BSTR。也就是说,如果你的类型是VARIANT,它会自动调用::VariantClear()。如果你的类型是BSTR,他会自动调用::SysStringFree()方法。
CComSafeArray<BSTR> bstrFileList(5);
_variant_t vt;
vt.vt = VT_ARRAY|VT_BSTR;
for (int i = 0L; i < 5; ++i)
{
bstrFileList[i] = (LPCTSTR)fileNameList[i];
}
vt.pparray = &bstrFileList.m_psa;