例如
IHTMLElement::get_outerHTML(BSTR * *);
IHTMLDocument2::get_URL (BSTR * *); 我用CComBSTR来作为参数,但尤其是获得大串返回值的get_outerHTML,会飞快的造成内存泄露,可以有1个小时100MB的速度。
正规的应该怎么样释放传递回来的BSTR?

解决方案 »

  1.   

    使用智能指针应该不会有这种问题,检查CComBSTR的作用域以及中途有没有做什么操作指针内存的操作。
      

  2.   

    HRESULT IHTMLElement::get_outerHTML(BSTR *p);
    IHTMLDocument2::get_URL(BSTR *p);我就说,怎么你是两个指针的。。
    你可以试试用SysFreeString释放内存吧
      

  3.   

    out类型的参数都得你释放VOID SysFreeString(  
      BSTR  bstr  
    );或者直接用 CComBSTR
    CComBSTR s;
    get_outerHTML(&s);就能自动释放了。
      

  4.   

    VOID SysFreeString( BSTR bstr ); 
      

  5.   

    CComBSTR s;
    get_outerHTML(&s);现在是用这个的,令人沮丧的是get_Url 占用的内存在一段时间后就不会增长了,但get_outerHTML还是会按照200KB、200KB的速度不断占用下去  :|
    现在用保存网页文件的方法来得到网页内容了,但是有没有朋友遇到过这个问题找到其他方法解决了的?