Forum: Object-Pascal / Delphi-Language
Delphi
by Sir Rufo,
8. Feb 2015
Momentchen a mal,
ich schreibe meine Programme immer mit ReportMemoryLeaksOnShutdown := true;. Dann weiß ich, dass ich vergessen habe, irgendwo etwas korrekt freizugeben.
Wenn ich jetzt aber irgendeine sonstwas Sammelliste im Programm habe, die alle Instanzen aufnimmt und dann am Ende garantiert freigibt, dann habe ich beim Beenden keine MemLeaks. Toll, ich bin ein Held!
Oder doch nur...
Forum: Object-Pascal / Delphi-Language
Delphi
by Sir Rufo,
8. Feb 2015
Full ack, ich hatte auch noch überlegt, ob ich das noch mit anspreche, habe mich aber dagegen entschieden. Manchmal muss man reduzieren, sonst sieht man den Wald vor lauter Bäumen nicht. Solche Ressourcen sollte man über ein selbstzerstörendes Interface reservieren :)
Forum: Object-Pascal / Delphi-Language
Delphi
by Sir Rufo,
7. Feb 2015
So eine ich beuge mal vor allem irgendwie vor Funktion ist absoluter Overkill und führt nur zu einem unsauberen Programmierstil. Wird ja immer alles so schön aufgeräumt am Schluss.
Gut im normalen Betrieb dauert es ca. 1h bis der Speicher überläuft, aber wir haben keinen MemLeak - dann ist doch alles gut, oder etwa nicht?
Ein super Anti-Beispiel ist die FireMonkey ListBox aus XE7. Füll da...
Forum: Object-Pascal / Delphi-Language
Delphi
by Sir Rufo,
7. Feb 2015
Wenn es nur um das Aufräumen geht, dann braucht man die Liste nicht, für andere Dinge schon ;)
Forum: Object-Pascal / Delphi-Language
Delphi
by Sir Rufo,
7. Feb 2015
@himitsu
Und warum überschreibst du nicht TObject.AfterConstruction?
Forum: Object-Pascal / Delphi-Language
Delphi
by Sir Rufo,
6. Feb 2015
TComponent.Notification überschreiben und Operation beachten ;)
Forum: Object-Pascal / Delphi-Language
Delphi
by Sir Rufo,
6. Feb 2015
Stimmt, kam mir doch gleich so komisch vor :mrgreen:
Forum: Object-Pascal / Delphi-Language
Delphi
by Sir Rufo,
6. Feb 2015
Warum sagst du denn nicht gleich, dass es sich um Nachfahren von TComponent handelt, die du in der Liste speichern möchtest. :wall:
Gerade die senden dir nach Anmeldung eine Nachricht, wenn die sich aus dem Speicher entfernen.
TComponent.FreeNotification
TComponent.RemoveFreeNotification
Fliegt also so eine Instanz weg, ohne dass du die aus der Liste nimmst, dann wirf die einfach aus der...
Forum: Object-Pascal / Delphi-Language
Delphi
by Sir Rufo,
6. Feb 2015
Das ist doch einfach: Es geht schlicht und ergreifend nicht.
Du hast die Verwaltung der Lifetime der Instanz an die Liste gegeben und nun schmeisst du es irgendwo aus dem Speicher. Das macht man nicht.
Das ist so, als ob du mir etwas schenkst und dann mir wieder wegnimmst. Das gibt auch Mecker (mindestens).
Nur das es bei Referenzen eben schlecht mit dem Kontrollieren aussieht, ob da an...