C++代码更新和插入SQL数据库内存泄漏

m_pConnection这个是个全局变量,
程序的意向是:建立一个全局连接m_pConnection,然后单独记录集m_pRecordset_3,单个释放,只保留连接m_pConnection,
结果:
程序内存泄漏

char chConvertBuffer[60];


string _strPreID = chConvertBuffer1;

//当前时间信息
string _strCurrentTime = chConvertBuffer2;


//更新数据库的语句
string strUpdateSqlEx = "UPDATE puS.dbo." + Name + " SET " + "ID = " + _strCurrentTime;
       strUpdateSqlEx += " WHERE ID = " + _strPreID;
//更新数据库的语句

//执行更新语句
try
{
    //执行更新
    m_pRecordset_3 = m_pConnection->Execute(strUpdateSqlEx.c_str(), &vAffect, adCmdText);
}
catch (_com_error *e)
{

}

//如果更新操作成功
if (vAffect.iVal > 0)
{

}
else
{

}
//关闭数据集
//m_pRecordset_3->Close(); 加上这句程序就出错
m_pRecordset_3.Release();
m_pRecordset_3 = NULL;

//
m_pConnection这个是个全局变量,
程序的意向是:建立一个全部连接m_pConnection,然后单独记录集m_pRecordset_3,单个释放,只保留连接m_pConnection,
结果:
程序内存泄漏

Execute返回的是智能指针,不需要你去创建实例

如果Execute返回的是智能指针,那m_pRecordset_3就可以不用Release(),这个函数是一个捕捉和释放的函数,因为智能指针啥子事情都帮你做了不用多此一举。

看起来想程序走到了catch分支下面,然后m_pRecordset_3里面并没有真实的数据,结果->Close()调用内部指针的时候就出错了