Einzelnen Beitrag anzeigen

PeterPanino

Registriert seit: 4. Sep 2004
1.465 Beiträge
 
Delphi 10.4 Sydney
 
#2

AW: Bug in QuickLib

  Alt 24. Dez 2020, 21:53
Weiterer Bug gefunden:

Code:
Quick.Process.GetProcessList
erzeugt ein Memory-Leak. Es scheint keine Möglichkeit zu geben, das Gedächtnis-Loch zu vermeiden:

Code:
procedure TForm1.tsProcessListsShow(Sender: TObject);
var
  sl: TStringList;
begin
  sl := TStringList.Create;
  try
    sl.Sorted := True;
    sl.Duplicates := dupIgnore;
    sl.AddStrings(Quick.Process.GetProcessList); // bug: Creates memory-leak
    //CodeSite.Send('TForm1.tsProcessListsShow: sl', sl);
    lstProcesses.Items.Assign(sl);
  finally
    sl.Free;
  end;
end;
Dies scheint ein konzeptioneller Fehler zu sein: Quick.Process.GetProcessList gibt ein Ergebnis vom Typ TStringList zurück. Aber wie soll man den Speicher dieser StringList wieder freigeben? Besser wäre es, der Funktion Quick.Process.GetProcessList eine existierende StringList als var-Parameter zu übergeben, die man dann nachher selbst freigeben kann, z.B.:

Code:
Quick.Process.GetProcessList(sl);
Geändert von PeterPanino, damit der Platz auf dem Bildschirm nicht so leer aussieht.

Geändert von PeterPanino (25. Dez 2020 um 10:38 Uhr)
  Mit Zitat antworten Zitat