Ado链接数据库SQL2000,释放内存出错

doublez123 2013-03-06 01:02:00
我的代码:
CoInitialize(NULL);
try
{
if(pRst == NULL)
pRst.CreateInstance(__uuidof(Recordset));
if(pConn == NULL)
pConn.CreateInstance(__uuidof(Connection));
}
catch (_com_error e)
{
AfxMessageBox("初始化失败。");
return;
}

//释放资源
if (pRst->State && pRst != NULL)
{
pRst->Close();
pRst.Release();
pRst = NULL;

}
if (pConn->State && pConn != NULL)
{
pConn->Close();
pConn.Release();
pConn = NULL;
}
CoUninitialize();

总是感觉释放不完全
...全文
99 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
doublez123 2013-03-07
  • 打赏
  • 举报
回复
我试了一下改成: //释放资源 if (pRst->State) { pRst->Close(); pRst.Release(); } if(pRst != NULL) pRst = NULL; if (pConn->State && pConn != NULL) { pConn->Close(); pConn.Release(); pConn = NULL; } ::CoUninitialize(); 多次操作没有错误,有没有大神帮分析一下!
doublez123 2013-03-07
  • 打赏
  • 举报
回复
判断条件不一样 if (pRst->State) if(pRst != NULL) 和if (pRst->State && pRst != NULL)
jimette 2013-03-07
  • 打赏
  • 举报
回复
if (pRst->State) { pRst->Close(); pRst.Release(); } if(pRst != NULL) pRst = NULL; 拆开有区别么?
zyq5945 2013-03-06
  • 打赏
  • 举报
回复
智能指针会自己释放,可以不用手动释放。
doublez123 2013-03-06
  • 打赏
  • 举报
回复

多次操作后的错误提示

4,012

社区成员

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

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