AGB  ·  Datenschutz  ·  Impressum  







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

TList - Fragen zur Speicherverwaltung

Ein Thema von LeoDD · begonnen am 12. Jan 2009 · letzter Beitrag vom 13. Jan 2009
Antwort Antwort
Seite 2 von 2     12   
generic

Registriert seit: 24. Mär 2004
Ort: bei Hannover
2.415 Beiträge
 
Delphi XE5 Professional
 
#11

Re: TList - Fragen zur Speicherverwaltung

  Alt 12. Jan 2009, 16:25
Was speicherst du in der TList?

Wenn es Objekte sind solltest du lieber TObjectList nehmen.
Diese kann auch die Objekte wieder freigeben.

s.H. Constructor -> owns muss auf true sein.
Coding BOTT - Video Tutorials rund um das Programmieren - https://www.youtube.com/@codingbott
  Mit Zitat antworten Zitat
Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#12

Re: TList - Fragen zur Speicherverwaltung

  Alt 12. Jan 2009, 16:29
Ich kann den Antwortern eigentlich nur bedingt zustimmen.

Das Freigeben der Objekte in der TList muss man abhängig von dem Objekt machen, an dem TList hängt.
Ist TList in einer Klasse definiert, dann TList aufräumen, wenn diese Klasse sich gerade in Rauch auflöst, wäre wie hier schon richtig angegeben im OnDestroy des Forms.
Ist TList aber als Variable in der Unit definiert, dann sollte die Freigabe im Abschnitt finalization erfolgen.

Objekte in einer (wie hier verwendeten) TList müssen beim Beenden nicht zwangsläufig manuell aus dem Speicher entfernt werden.

Bei einigen Klassen kann ich ja beim Erzeugen auch einen Owner mitgeben TIdFTP.Create( AOwner : TComponent ). Habe ich dieses gemacht, so wird dieses erzeugte Objekt beim Entfernen von Owner auch automatisch aus dem Speicher geschmissen.

Zitat von sirius:
2. Den Speicher gibst du einfach frei, wenn TList.Free (also in Destroy) aufgerufen wird.
aber auch nur die TList selber und nicht die angehängten Objekte!

cu

Oliver
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)
  Mit Zitat antworten Zitat
Benutzerbild von sirius
sirius

Registriert seit: 3. Jan 2007
Ort: Dresden
3.443 Beiträge
 
Delphi 7 Enterprise
 
#13

Re: TList - Fragen zur Speicherverwaltung

  Alt 12. Jan 2009, 16:48
Zitat von Sir Rufo:
aber auch nur die TList selber und nicht die angehängten Objekte!
Deswegen schrieb ich ja, in Destroy
Dieser Beitrag ist für Jugendliche unter 18 Jahren nicht geeignet.
  Mit Zitat antworten Zitat
Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#14

Re: TList - Fragen zur Speicherverwaltung

  Alt 12. Jan 2009, 16:54
Zitat von sirius:
Zitat von Sir Rufo:
aber auch nur die TList selber und nicht die angehängten Objekte!
Deswegen schrieb ich ja, in Destroy
... ich meinte mit TList.Free wird nur TList freigegeben - Punkt, aus. Alles was ich vorher an TList gehängt habe ist weiterhin im Speicher.
Das Freigeben von angehängten Objekte kann nur TObjectList.
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)
  Mit Zitat antworten Zitat
Benutzerbild von sirius
sirius

Registriert seit: 3. Jan 2007
Ort: Dresden
3.443 Beiträge
 
Delphi 7 Enterprise
 
#15

Re: TList - Fragen zur Speicherverwaltung

  Alt 12. Jan 2009, 16:59
Ich sehe, wir meinen das gleiche.
Deswegen muss man es (alles angehängte) ja in Destroy freigeben.
Dieser Beitrag ist für Jugendliche unter 18 Jahren nicht geeignet.
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.537 Beiträge
 
Delphi 11 Alexandria
 
#16

Re: TList - Fragen zur Speicherverwaltung

  Alt 12. Jan 2009, 17:02
Ich glaube, Sir Rufo hat den Satz
Zitat:
Den Speicher gibst du einfach frei, wenn TList.Free (also in Destroy) aufgerufen wird.
nur falsch interpretiert. Sagen wir also einfach, dass vor dem Free die enthaltenen Daten freigegeben werden müssen .
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
LeoDD

Registriert seit: 30. Jul 2003
43 Beiträge
 
Delphi 2010 Professional
 
#17

Re: TList - Fragen zur Speicherverwaltung

  Alt 13. Jan 2009, 09:14
Zitat von generic:
Was speicherst du in der TList?

Wenn es Objekte sind solltest du lieber TObjectList nehmen.
Diese kann auch die Objekte wieder freigeben.

s.H. Constructor -> owns muss auf true sein.
Es sind Zeiger auf Records, keine Objekte.

Ich hab überlegt, Objekte zu nehmen, habe aber keine Lust auf Typecastings.
Erst wenn man dreimal auf Holz klopfen will, stellt man fest, dass die Welt nur noch aus Plastik und Aluminium besteht.
  Mit Zitat antworten Zitat
Benutzerbild von sirius
sirius

Registriert seit: 3. Jan 2007
Ort: Dresden
3.443 Beiträge
 
Delphi 7 Enterprise
 
#18

Re: TList - Fragen zur Speicherverwaltung

  Alt 13. Jan 2009, 10:11
Bei records musst du doch auch von einem Pointer auf ein PRecord casten

Ich würde lieber gleich Klassen nehmen. Erstens hast du dann den Vorteil von TObjectlist. Zweitens kannst du dann jederzeit noch Methoden ergänzen, oder gar eine Ableitung deiner ersten Klasse speichern.
Dieser Beitrag ist für Jugendliche unter 18 Jahren nicht geeignet.
  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 12:48 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