【发布时间】:2011-02-09 08:53:33
【问题描述】:
我在 IDL 中定义了一个结构。该结构有以下成员:
{
BSTR m_sFirst;
BSTR m_sSecond;
VARIANT m_vChildStruct; //This member encapsulate a sub structure
SAFEARRAY __RPC_FAR * m_saArray;
}CustomINFO;
我正在使用 CoTaskMemAlloc 为结构分配内存并将其封装在 Variant 中,如下所示:
vV->vt = VT_RECORD;
vV->pvRecord = pStruct; //Pointer of sturct
vV->pRecInfo = pRI; //RecordInfo Interface
调用 VariantClear 释放结构及其成员的内存是否足够? 会不会也放出IRecordInfo接口?
或者我必须手动获取封装的结构并自己释放每个成员,然后使用 CoTaskMemFree 释放结构。
谢谢
皮卡罗·德·沃西奥
【问题讨论】:
-
您已经需要一个 IRecordInfo 用于“主”结构。为什么不直接声明子结构而不是使用变体?
标签: visual-c++ com mfc atl com+