最近在开发一个打印伺服,结果测试时发现程序会不停地泄露内存,每秒能泄露1m内存,1m 啊兄弟们,我头疼了,于是到处上网去搜,有的说你的连接未释放,有的说ado本身有问题,有的说是_bStr_内存没释放,结果发现是调用存储过程的_CommandPtr没有release。
先看代码:
try
{
_CommandPtr m_pCommand;
m_pCommand.CreateInstance(__uuidof(Command));
m_pCommand->ActiveConnection = m_pSqlConnect.GetHandle();
m_pCommand->CommandType = adCmdStoredProc;
m_pCommand->CommandText = _bstr_t(_T("GenerateCCPrintTask"));
_variant_t vNull;
vNull.vt=VT_ERROR;
vNull.scode=DISP_E_PARAMNOTFOUND;
m_pCommand->Execute(&vNull,&vNull,adCmdStoredProc);
m_pCommand.Detach();
}
catch (_com_error &error)
{
CString errorMsg;
errorMsg.Format(_T("执行存储过程GenerateCCPrintTask异常,错误为:%s"),error.ErrorMessage());
AfxMessageBox(errorMsg);
}
事实上,这块代码我是从网上弄下来的,所以也没深入研究就