Delphi:TAdoQuery内存泄漏? [英] Delphi: TAdoQuery Memory Leak?

查看:175
本文介绍了Delphi:TAdoQuery内存泄漏?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在使用Delphi 5和ADO开发小型糖尿病程序.我这样查询一下:

I'm developing as small diabetes program using Delphi 5 and ADO. I do a little query like this:

function GetLowestGlucoseLevel(StartDate:string;EndDate:string): Integer;
var
  Q:TADOQuery;
begin
   try
      Q:=TADOQuery.Create(Application); //Separate unit, owner set to App
      Q.Connection:=dtMod.ADOCon;
      Q.DisableControls;
      Q.Close;
      Q.SQL.Clear;
      Q.SQL.Add('SELECT Min(qGlucose.Glucose) AS MinOfGlucose from qGlucose');
      Q.Parameters[0].Value:=StartDate;
      Q.Parameters[1].Value:=EndDate;
      Q.Open;

      Result:=Q.FieldByName('MinOfGlucose').AsInteger;

      Q.Close;
    finally
      Q:=nil;
      Q.Free; 
    end; 
end;

查询运行正常,并按预期返回结果.但是,当我检查Windows Task Manager时,内存使用率在查询后一直保持上升而不是下降.

The query runs OK and returns the result as expected. However, when I checked Windows Task Manager, memory usage keeps on rising rather than decreasing after the query.

如何解决此问题?

谢谢!

推荐答案

要泄漏TADOQuery,请先将其设置为nil,然后在nil变量上调用Free(不执行任何操作)

You are leaking the TADOQuery by first setting it to nil, and then calling Free on the nil variable (which does nothing)

这篇关于Delphi:TAdoQuery内存泄漏?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆