Einzelnen Beitrag anzeigen

jbg

Registriert seit: 12. Jun 2002
3.483 Beiträge
 
Delphi 10.1 Berlin Professional
 
#6

Re: Wo ist der Speicherüberlauf??

  Alt 22. Nov 2007, 18:48
Zitat von quendolineDD:
Bei Destroy wird afaik kein Speicherplatz freigegeben...
Du meinst wohl "afaidk". Destroy gibt den Speicher auch frei. Nur soll man Destroy nicht direkt aufrufen und das schon seit Delphi 1. Das steht so auch in der Hilfedatei. Für die genauen Gründe kann man sich ja mal Allen Bauers (CodeGear) Blog anschauen.

Beim Code fehlen nicht nur die try/finally Blöcke, sondern wird auch unnötig der Stream geleert bevor er freigegeben wird. Das erinnert mich an folgenden Code:
Delphi-Quellcode:
var
  List: TStringList;
begin
  List := TStringList.Create;
  List.Clear; // Die Liste könnte ja schon nach dem Erzeugen gefüllt sein, man weiß ja nie :-)
  ...
  List.Clear; // Es könnte ja sein, dass der Destruktor nur zur Gaudi vorhanden ist.
  List.Free;
end;
  Mit Zitat antworten Zitat