我看应该要加SysFreeString(var.bstrVal);,因为我在MSDN里的VCterm是用SysFreeString(var.bstrVal);释放的.

解决方案 »

  1.   

    最好调用VariantClear,它会帮你释放String,同时会根据不同的类型完成不同的释放操作,比自己控制方便多了。
    有关Variant有一组API函数,还是很有用的,关于Variant尽量使用相关的函数,可以省去很多麻烦。
      

  2.   

    看看_variant_t的源代码不就知道了!
      

  3.   

    不需要的, _variant_t 变量会自动清除的。这是在_variant_t 析构函数中进行的操作。
    _com_util::CheckError(::VariantClear(this));
      

  4.   

    不需要,正如csdnflysnow指出的那样,_variant_t的析构函数将调VariantClear,而对VT_BSTR,VariantClear将调SysFreeString
    还有_bstr_t,以及ATL类CComBSTR,CComVariant模板类,都不需要考虑额外的清除操作,析构函数为你做了