C++ BUilder 开发的线程,内存不断增加的问题

chaoping 2016-09-05 08:00:59
用c++Builder开发了一个线程,操作数据库,内存会不断的增加,以下面这个简单的线程为例,大概以4K左右的速度增加内存,这个是什么原因呀?是什么地方出了问题呀?
线程函数代码如下:
DWORD WINAPI ThreadProcessAlarmFun( LPVOID lpParamenter)
{
AnsiString astrSql="",astrSeLineName="";
TADOQuery *qryAlarmFind=new TADOQuery(NULL);
TADOConnection *conLightShowFind= new TADOConnection(NULL);
AnsiString astrString="Provider=SQLOLEDB.1;Persist Security Info=True;User ID="+astrUserName+";Password="+astrPassword+";Initial Catalog="+astrDateBaseName+";Data Source="+astrServerIp;
while(ThreadProcessAlarmFlag==true)
{
CoInitialize(NULL);
try
{
conLightShowFind->Close();
conLightShowFind->ConnectionString=astrString;
conLightShowFind->LoginPrompt=false;
conLightShowFind->Open();
qryAlarmThreshold->Connection=conLightShowFind;
qryAlarmFind->Connection=conLightShowFind;
qryAlarmExc->Connection=conLightShowFind;
astrSql="select Line_Name from TAB_Workbay where I_Type=0";
qryAlarmFind->Close();
qryAlarmFind->SQL->Text=astrSql;
qryAlarmFind->Open();
while(!qryAlarmFind->Eof)
{
astrSeLineName= qryAlarmFind->FieldByName("Line_Name")->AsString;
qryAlarmFind->Next();
}
qryAlarmFind->Close();
conLightShowFind->Close();
}
catch(...)
{
;
}
CoUninitialize();
Sleep(100);
}
}
...全文
587 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
hack_tian 2017-05-31
  • 打赏
  • 举报
回复
是不是你new的对象没有释放
annhoo 2016-09-13
  • 打赏
  • 举报
回复
设置一个资源锁。
chaoping 2016-09-05
  • 打赏
  • 举报
回复
引用 3 楼 FASM_FASM 的回复:
[quote=引用 2 楼 chaoping 的回复:] [quote=引用 1 楼 FASM_FASM 的回复:] 是你操作数据库出现大量异常错误,导致资源不能正常释放所致!
---这些异常错误跟踪不到呀? 怎么解决? 有什么好的解决方案?[/quote] 这些异常应该都能捕捉到,只是你没有处理(或没有正确处理而已)。[/quote] 我把线程的代码不在线程里面执行,多次执行这段代码,内存也不会增加,可以正常释放的,应该是在线程里面的处理有问题,应该怎么处理?
sczyq 2016-09-05
  • 打赏
  • 举报
回复
1、 CoInitialize(NULL); CoUninitialize(); 位置不对,线程内只需要一次初始化COM,然后释放 2、像 new 一个对像,需要 delete 释放 3、DEBUG 检查一下运行有没有SQL错误
FASM_FASM 2016-09-05
  • 打赏
  • 举报
回复
引用 2 楼 chaoping 的回复:
[quote=引用 1 楼 FASM_FASM 的回复:] 是你操作数据库出现大量异常错误,导致资源不能正常释放所致!
---这些异常错误跟踪不到呀? 怎么解决? 有什么好的解决方案?[/quote] 这些异常应该都能捕捉到,只是你没有处理(或没有正确处理而已)。
chaoping 2016-09-05
  • 打赏
  • 举报
回复
引用 1 楼 FASM_FASM 的回复:
是你操作数据库出现大量异常错误,导致资源不能正常释放所致!
---这些异常错误跟踪不到呀? 怎么解决? 有什么好的解决方案?
FASM_FASM 2016-09-05
  • 打赏
  • 举报
回复
是你操作数据库出现大量异常错误,导致资源不能正常释放所致!

1,178

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder 数据库及相关技术
社区管理员
  • 数据库及相关技术社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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