AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Räumt diese Komponente hinter sich auf?

Ein Thema von hzzm · begonnen am 3. Aug 2018 · letzter Beitrag vom 14. Aug 2018
Antwort Antwort
Seite 2 von 2     12   
Blup

Registriert seit: 7. Aug 2008
Ort: Brandenburg
1.477 Beiträge
 
Delphi 12 Athens
 
#11

AW: Räumt diese Komponente hinter sich auf?

  Alt 8. Aug 2018, 11:07
Im TPic-construcor wird FPicture erzeugt. Deshalb sollte es auch einen TPic-destructor geben, der FPicture freigibt.
  Mit Zitat antworten Zitat
Benutzerbild von jaenicke
jaenicke

Registriert seit: 10. Jun 2003
Ort: Berlin
9.648 Beiträge
 
Delphi 11 Alexandria
 
#12

AW: Räumt diese Komponente hinter sich auf?

  Alt 8. Aug 2018, 17:44
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).
Sebastian Jänicke
AppCentral
  Mit Zitat antworten Zitat
hzzm

Registriert seit: 8. Apr 2016
103 Beiträge
 
Delphi 10 Seattle Professional
 
#13

AW: Räumt diese Komponente hinter sich auf?

  Alt 14. Aug 2018, 11:27
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!
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 2     12   


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 23:41 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz