1
私はC++で次のコードを持っています。私は 'varDest'変数を解放する必要がありますか?VariantChangeTypeの後にVariantClearを呼び出す必要がありますか?
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);
}
@Mahesh COMには、新しい/削除とは独立した特別なメモリ管理ルールがあります。 – JaredPar
@JaredPar COMプログラミングは認識していません。申し訳ありませんが、私のコメントを削除します:) – Mahesh
Maheshがちょうど表明したCOMに関するこのような誤解のため、Windowsはメモリリークでいっぱいです。私はMSDNがこれを説明するのがよかったと思っています。 – ahmd0