Delphi-PRAXiS
Seite 2 von 2     12   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Räumt diese Komponente hinter sich auf? (https://www.delphipraxis.net/197385-raeumt-diese-komponente-hinter-sich-auf.html)

Blup 8. Aug 2018 10:07

AW: Räumt diese Komponente hinter sich auf?
 
Im TPic-construcor wird FPicture erzeugt. Deshalb sollte es auch einen TPic-destructor geben, der FPicture freigibt.

jaenicke 8. Aug 2018 16:44

AW: Räumt diese Komponente hinter sich auf?
 
Zitat:

Zitat von Blup (Beitrag 1410107)
Im TPic-construcor wird FPicture erzeugt. Deshalb sollte es auch einen TPic-destructor geben, der FPicture freigibt.

Das geht nach der aktuellen Konstruktion aber nicht, weil der Pointer darauf einfach zwischen den Instanzen weitergereicht wird. Und dadurch gehen die Referenzen teilweise verloren und sich teilweise doppelt. Das ginge nur mit Interfaces so (oder mit ARC).

hzzm 14. Aug 2018 10:27

AW: Räumt diese Komponente hinter sich auf?
 
Zitat:

Zitat von jaenicke (Beitrag 1409594)
So wie du es aktuell hast, ist die korrekte Speicherverwaltung sehr schwer. Denn im Assign kopierst du z.B. nur den Pointer auf ein fremdes Objekt. Dadurch darf dieses Objekt außen gar nicht freigegeben werden, aber auch das Objekt, das den Pointer bekommen hat, kann es nicht tun, da es ja nicht weiß was außen mit dem Objekt passiert.

Delphi selbst macht das so (in TPicture z.B.), dass schlicht im Setter und in Assign der Inhalt kopiert wird. Dadurch sind die einzelnen Objekte voneinander unabhängig und können im Destruktor alles problemlos freigeben, das sie selbst erzeugt haben.

Gold wert. Danke!


Alle Zeitangaben in WEZ +1. Es ist jetzt 20:40 Uhr.
Seite 2 von 2     12   

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz