我是否需要在VariantChangeType之后调用VariantClear

时间:2012-02-14 21:02:28

标签: c++ winapi wmi variant

我在C ++中有以下代码。我需要释放'varDest'变量吗?

VARIANT val;
if(SUCCEEDED(classObj->Get(pwPropName, 0, &val, NULL, 0)))  //WMI property retrieval
{
    //Then at some point
    VARIANT varDest;
    varDest.vt = VT_EMPTY;
    if(SUCCEEDED(::VariantChangeType(&varDest, 
        const_cast<VARIANT *>(&val), 0, VT_BSTR)))
    {
        //Do I need to call the following?
        VariantClear(&varDest);
    }

    VariantClear(&val);
}

1 个答案:

答案 0 :(得分:3)

是的,您必须致电VariantClear。如果成功,VariantChangeType方法基本上会将源的副本强制转换为目标。现在,目的地中的此副本将被独立跟踪,并且必须单独清除。