我在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);
}
答案 0 :(得分:3)
是的,您必须致电VariantClear
。如果成功,VariantChangeType
方法基本上会将源的副本强制转换为目标。现在,目的地中的此副本将被独立跟踪,并且必须单独清除。