IDL에 정의 된 구조가 있습니다.VARIANT에 캡슐화 된 IDL 사용자 정의 구조의 멤버 (예 : BSTR, SAFEARRAY, VARIANT)를 해제하는 방법은 무엇입니까?
{
BSTR m_sFirst;
BSTR m_sSecond;
VARIANT m_vChildStruct; //This member encapsulate a sub structure
SAFEARRAY __RPC_FAR * m_saArray;
}CustomINFO;
내가 CoTaskMemAlloc를 사용하여 구조체를위한 메모리를 할당하고 다음과 같이 변형에서 캡슐화하고 있습니다 :
vV->vt = VT_RECORD;
vV->pvRecord = pStruct; //Pointer of sturct
vV->pRecInfo = pRI; //RecordInfo Interface
는 구조체의 메모리 할당을 해제를 VariantClear를 호출 충분히인가이 구조는 다음과 같은 멤버를 가지고 및 그 회원? IRecordInfo 인터페이스도 출시됩니까?
아니면 수동으로 캡슐화 된 구조체를 가져 와서 각 멤버를 직접 할당 해제 한 다음 CoTaskMemFree를 사용하여 sturct를 할당 해제해야합니다.
감사
Picaro 드 Vosio
당신은 이미 "주요"구조에 대한 IRecordInfo이 필요합니다. 왜 변형을 사용하는 대신 자식 구조를 그대로 선언하지 않는 것이 좋을까요? –