TADOQuery好像会内存泄漏。 ( 积分: 100 )

  • 主题发起人 主题发起人 prettysky
  • 开始时间 开始时间
P

prettysky

Unregistered / Unconfirmed
GUEST, unregistred user!
var
Hash:Integer;
Query:TADOQuery;
begin
Result:=False;
Query:=TADOQuery.Create(nil);
try
try
Query.ConnectionString:='Provider=Microsoft.Jet.OLEDB.4.0;Data Source='''+MyPath+'sysdb.dat''';
Query.SQL.Text:=Format('Select * From [spider] Where 哈希=%d And 地址=''%s''',[Hash,Value]);
Query.Open();
Except
//on E: Exception do
// ErrorLog('Error:ChkAddUrl!'#13#10'Message:'+E.Message);
end;
Finally
Query.Close;
Query.Free;
end;
end;

上面函数如果多次循环调用就会内存泄漏。
实在想不出来会在哪里泄漏了。

而且这种泄漏很奇怪,任务管理器中看不到程序内存增大,但是系统总体可用内存不断下降。并且当达到一定程度,系统DC似乎出问题,屏幕字体开始混乱。最终死机。

WinXP SP2 Access数据库 JET引擎以打最新补丁
Delphi7+Update1
 
?不太清楚,不过这可能与你的调用程序有关。

详细的内容请到我的网站www.16899.com.cn(纯粹的DELPHI技术网站)看看,也许会有答案。
 
我已经把代码最小化,

新建一个工程,在只有上面的那段代码循环调用的情况下,内存依然泄漏。

而且是任务管理器中看不到程序内存增大,但是系统总体可用内存不断下降。并且当达到一定程度,系统DC似乎出问题,屏幕字体开始混乱。最终死机。
 
后退
顶部