我需要在VariantChangeType之后调用VariantClear吗

Do I need to call VariantClear after VariantChangeType

本文关键字:调用 VariantClear 之后 VariantChangeType      更新时间:2023-10-16

我在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);
}

是的,您必须调用VariantClear。如果成功的话,VariantChangeType方法将强制源的副本进入目标。目标中的此副本现在被独立跟踪,必须独立清除。