_variant_t 转换为CString时,在结束程序时,总是报内存泄露

I2Asp_netcs 2010-08-25 09:40:42
网上的很多转换方法都试了,但为什么总是报内存泄露,有没有哪位朋友知道是怎么回事,如何不让其内存泄露?
...全文
195 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
dvlinker 2010-08-27
  • 打赏
  • 举报
回复
用OpenRecordset函数打开一个记录集后赋给记录集智能指针_RecordsetPtr rs,在操作完后应该调用close方法将记录集关闭:
rs->Close();
dvlinker 2010-08-27
  • 打赏
  • 举报
回复
LZ看看下面的方法行不行:

_variant_t vtTmp;
......//通过GetCollect函数获取查询结果中的某个字段的值,放到vtTmp中
CString strName;
strName = (LPCTSTR)(_bstr_t)vtTmp;
向立天 2010-08-27
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 i2asp_netcs 的回复:]
有,我是使用Visual Leak Detector v1.9测试的,难道是用的有问题
[/Quote]
是不是你别的地方有内存泄漏
你把这些代码注释掉有没有了么
I2Asp_netcs 2010-08-27
  • 打赏
  • 举报
回复
有,我是使用Visual Leak Detector v1.9测试的,难道是用的有问题
m_tornado 2010-08-25
  • 打赏
  • 举报
回复
内存泄露?你怎么用的,大家看了才知道为什么啊~
tubo_true 2010-08-25
  • 打赏
  • 举报
回复
你的CString不会是new 出来的吧??
tubo_true 2010-08-25
  • 打赏
  • 举报
回复

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;
}


我在用,无内存泄露
向立天 2010-08-25
  • 打赏
  • 举报
回复
你现在用的是什么方法
向立天 2010-08-25
  • 打赏
  • 举报
回复
这两种方法有内存泄漏?
I2Asp_netcs 2010-08-25
  • 打赏
  • 举报
回复
一下的两种:

(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

15,471

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 进程/线程/DLL
社区管理员
  • 进程/线程/DLL社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧