Ich lese Hodges Buch "More Coding in Delphi", Abschnitt über Factory Pattern.
Versuche etwas zu lernen. Zerbrach meinen Code in kleine Einheiten.
Ich benutze ReportMemoryLeaksOnShutDown := True;
und der folgende Code erzeugt ein Speicherleck. Warum tritt es auf und wie behebe ich es?
Dies ist ein Compilerfehler. Das Definieren einer anonymen Methode im Initialisierungsabschnitt der Einheit führt offenbar dazu, dass diese anonyme Methode nicht finalisiert und daher durchgelassen wird. In diesem Fall würde ich das Problem umgehen, indem ich den Code aus dem Initialisierungsabschnitt in class constructor
verschiebe.
Entfernen Sie also den Abschnitt initialization
vollständig und ändern Sie den Klassenkonstruktor wie folgt:
Hier ist die einfachste Reproduktion, die ich zusammenstellen kann:
%Vor%Wenn Sie diese Einheit in ein Projekt einschließen, wird die anonyme Methode als durchgesickert gemeldet.
Aber diese Variante meldet kein Leck:
%Vor%Der Fehler wurde in XE8 behoben.
Tags und Links delphi delphi-xe2 factory-pattern factory