Hallo
Bin auf FastIniFiles (
http://home.arcor.de/smartprog4u/) umgestiegen weil es ein paar nette Funktionen bietet und schneller läuft.
Das Problem: Beim Beenden des Programms gibt es Memory Leaks.
Testcode:
Delphi-Quellcode:
uses
FastIniFiles;
procedure TForm1.FormCreate(Sender: TObject);
begin
with TFIniFile.Create('C:\...\test.ini') do
try
(*........*)
finally
Free;
end;
end;
Leaks:
Zitat:
----------------------------------------------------------------------------
|+Memory Leak: Type=Data; Total size=32; Count=2 |
|--------------------------------------------------------------------------|
|004AD2E6|Project1.exe|FastIniFiles.pas|TFIniFile| Create |346[92] |
|004AD2FC|Project1.exe|FastIniFiles.pas|TFIniFile| Create |347[93] |
|--------------------------------------------------------------------------|
| |
|+Memory Leak: Type=TFIniValue; Total size=32; Count=2 |
|--------------------------------------------------------------------------|
|004AD361|Project1.exe|FastIniFiles.pas|TFIniFile| Create |354[100]|
|004ACF13|Project1.exe|FastIniFiles.pas|TFIniFile| Create |243[9] |
----------------------------------------------------------------------------
Ein Leak soll gem. Anzeige oben hier auftreten:
Delphi-Quellcode:
constructor TFIniFile.Create(const FileName: string; CommentChar: Char = '#');
var
Stream: TStream;
begin
//...
Self := Create(Stream);
Stream.Free;
end;
Warum denn? Das Ini File wird ja wieder freigegeben und sobit der Stream auch??
Zudem gibt es noch etliche andere Leaks. Vermutlich in den Destruktoren. Wer findet noch welche?
Genügt z.B das Finalize oder braucht es noch ein for i := Low(Values) to High(Values) do Values[i].Free; ?
Delphi-Quellcode:
destructor TFIniSection.Free;
var
i: Integer;
begin
Name := '';
Finalize(Values);
inherited Free;
end;