网上的很多转换方法都试了,但为什么总是报内存泄露,有没有哪位朋友知道是怎么回事,如何不让其内存泄露?

解决方案 »

  1.   


    CString CXMLMyLib::FromVARIANT( const _variant_t& varText )
    {
    CString csText;
    if ( varText.vt == VT_BSTR )
    csText = FromBSTR( varText.bstrVal );
    return csText;
    }CString CXMLMyLib::FromBSTR( const _bstr_t& bstrText )
    {
    #ifdef _UNICODE
    CString csText( (LPCWSTR)bstrText );
    #else
    USES_CONVERSION;
    CString csText( W2A(bstrText) );
    #endif
    return csText;
    }
    我在用,无内存泄露
      

  2.   

    你的CString不会是new 出来的吧??
      

  3.   

    一下的两种:(1)(TCHAR*)(_bstr_t)varSBBH
    (2)
    _bstr_t bstr_t;
        bstr_t=variant_t;
        //strTemp.Format("%s",(const char *)bstr_t);
    const char* str;
    str=(const char*)bstr_t; 
    str为CString
      

  4.   

    有,我是使用Visual Leak Detector v1.9测试的,难道是用的有问题
      

  5.   

    LZ看看下面的方法行不行: _variant_t vtTmp;
            ......//通过GetCollect函数获取查询结果中的某个字段的值,放到vtTmp中
    CString strName;
            strName = (LPCTSTR)(_bstr_t)vtTmp;
      

  6.   

    用OpenRecordset函数打开一个记录集后赋给记录集智能指针_RecordsetPtr rs,在操作完后应该调用close方法将记录集关闭:
    rs->Close();