定义firedac连接时发生内存泄漏

问题描述 投票:0回答:1

我已经使用firedac创建了一个池连接,将FDServerManager FDWaitCursir和FDphysMySQLDriverlink放在数据模块上,并且在DataModuleCreate上我编写了一个方法来读取名为conn.ini的文件

procedure TDataModule2.DataModuleCreate(Sender: TObject);
var
  oParams : TStringList;
  cdir, fname : string;
  fs : TFileStream;
  sr : tStreamReader;
 begin
   cdir := GetCurrentDir;
   fname := 'conn.ini';
   try
     fs := TFileStream.Create(cdir+TPath.DirectorySeparatorChar+fname, fmOpenRead);
     try
       sr := tStreamReader.Create(fs, TEncoding.UTF8);
       try
         oParams := TStringList.Create;
         while not sr.EndOfStream do
           oParams.Add(sr.ReadLine);
         FDManager1.AddConnectionDef('MySQL_pooled', 'MySQL', oParams);
       finally
         sr.Free;
       end;
     finally
       fs.Free
     end;
   except
      on E: EFileStreamError do
         showmessage('file not found '+e.Message);
   end;
end;

.ini 文件

[MySQL_pooled]
Server=localhost
User_Name=franz
Password=franz
Database=mydb
Pooled=false
POOL_MaximumItems=100

我准备了一份用于测试连接的表格

procedure TForm1.bnConnectClick(Sender: TObject);
begin
   DataModule2.FDConnection1.ConnectionDefName := 'MySQL_pooled';
   DataModule2.FDConnection1.Connected := true;
   ShowMessage('OK')
end;

连接正常,但当我关闭应用程序时,我收到内存泄漏

但我不知道为什么。有什么建议吗?

delphi memory-leaks firedac
1个回答
1
投票

看来你没有破坏oParams。

© www.soinside.com 2019 - 2024. All rights reserved.