int i=0;
while(i<1000)
{ CoInitialize(NULL);
_ConnectionPtr conPtr=NULL;
conPtr.CreateInstance(__uuidof(Connection));
try
{
conPtr->ConnectionTimeout = 5; //设置连接时间
conPtr->Open(_bstr_t("DSN=DXS;"), _bstr_t("pacs_dws"),_bstr_t("m123"), adModeUnknown);
}
catch(_com_error e) //捕捉异常
{
AfxMessageBox(e.Description());
}
CoUninitialize();
_RecordsetPtr recordPtr;//数据集指针
recordPtr.CreateInstance(__uuidof(Recordset));
CString cmdStr="select examinationID from t_examination";
try
{
recordPtr->Open(_variant_t(cmdStr),
conPtr.GetInterfacePtr(),
adOpenDynamic,
adLockOptimistic,
adCmdText);
}
catch (_com_error e)
{
}
while (!(recordPtr->adoEOF))
{//获取记录
_variant_t examinationID;
examinationID=(int)recordPtr->GetCollect("examinationID");
int iExaminationID=examinationID.intVal;
recordPtr->MoveNext();
}
recordPtr->Close();//关闭记录集
recordPtr.Release();
recordPtr=NULL;
conPtr->Close();//关闭连接
conPtr.Release();
conPtr=NULL;
}
我查看了下内存一个劲的往上涨
那位大哥知道是什么原因导致的
我循环一千次是有原因的必须是这样做,应为我必须打到一天一万次一上 那位大哥知道不
分少没关系我可以在加
在线等
while(i<1000)
{ CoInitialize(NULL);
_ConnectionPtr conPtr=NULL;
conPtr.CreateInstance(__uuidof(Connection));
try
{
conPtr->ConnectionTimeout = 5; //设置连接时间
conPtr->Open(_bstr_t("DSN=DXS;"), _bstr_t("pacs_dws"),_bstr_t("m123"), adModeUnknown);
}
catch(_com_error e) //捕捉异常
{
AfxMessageBox(e.Description());
}
CoUninitialize();
_RecordsetPtr recordPtr;//数据集指针
recordPtr.CreateInstance(__uuidof(Recordset));
CString cmdStr="select examinationID from t_examination";
try
{
recordPtr->Open(_variant_t(cmdStr),
conPtr.GetInterfacePtr(),
adOpenDynamic,
adLockOptimistic,
adCmdText);
}
catch (_com_error e)
{
}
while (!(recordPtr->adoEOF))
{//获取记录
_variant_t examinationID;
examinationID=(int)recordPtr->GetCollect("examinationID");
int iExaminationID=examinationID.intVal;
recordPtr->MoveNext();
}
recordPtr->Close();//关闭记录集
recordPtr.Release();
recordPtr=NULL;
conPtr->Close();//关闭连接
conPtr.Release();
conPtr=NULL;
}
我查看了下内存一个劲的往上涨
那位大哥知道是什么原因导致的
我循环一千次是有原因的必须是这样做,应为我必须打到一天一万次一上 那位大哥知道不
分少没关系我可以在加
在线等
CoInitialize(NULL);
_ConnectionPtr conPtr=NULL;
conPtr.CreateInstance(__uuidof(Connection));
等移出循环
有没有解决这个内存泄漏的方法呢
少了分可以追加
我这边的问题是没办法做一个长连接
看了 zyq5945大哥的ADO类
也是做了一个长连接
我这边那的是别人做的东西,采用是进程式,通过通讯获取通讯信息,同时启动一个程序把通讯的数据保存到数据库中。现在没法动其他的东西呢,只是有内存泄漏的问题
这句放在while(i<1000)前面,就是不要放在循环里,如果要放在循环里,就得在循环最后再加个CoUninitialize函数来释放,就是没有释放造成内存泄露.
其实CoInitialize(NULL);放在工程初始化函数执行一次就行了,在程序退出函数里加上释放函数
CoInitialize在程序初始化调用一次就可以了。
应为这个没有解决实际的问题
我的问题的根源在于把Ado连接分配的内存完全释放掉才可以
那有没有其他方式连接Oracle 数据库呢
我就不懂他到底在什么地方什么原因导致他没释放掉