AGB  ·  Datenschutz  ·  Impressum  







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

Zeiger freigeben

Ein Thema von TomDooley · begonnen am 16. Jun 2005 · letzter Beitrag vom 21. Jun 2005
Antwort Antwort
Muetze1
(Gast)

n/a Beiträge
 
#1

Re: Zeiger freigeben

  Alt 16. Jun 2005, 22:14
Moin!

Zitat von TomDooley:
Soll ich nun den Zeiger wie ich's gemacht habe in der zweiten Funktion disposen oder macht man in solchen Fällen in der TestClassA eine Prozedur, die dann einfach dispose(PTestRecord) aufruft (und in der Button1Click-Prozedur aufgerufen wird)?
Nach dem Dispose() zeigt aber der erste Eintrag der Liste ins Nirvana, da du den Speicherbereich freigegeben hast, wo der Record liegt und wo der Eintrag der Liste hinzeigt. Die Liste gibt dir ja nur einen Pointer zurück auf die Stelle im Speicher wo der Record liegt. Nun musst du aber den reinen Pointer den du beim Button Click bekommst aber nicht freigeben, da es wie eine Integer Variable ist - und die musste auch nicht freigeben.

Grundsätzlich musst du den Speicher für den Record freigeben, wenn du den Eintrag löscht in der Liste - weil die Liste verwaltet nur Zeiger, die zweiss nix von dem Typ und kann daher auch nicht den Speicher freigeben.

Zitat von TomDooley:
Die selbe Frage stellt sich natürlich auch wenn man statt mit TList mit TObjectList arbeiten würde (und dann Objekte auflistet). Dann würde aber nur der Weg über eine Funktion der Klasse TTestClassA funtktionieren, oder?
Da ist es ja so, das du auch nur eine Referenz auf das Objekt bekommst. Würdest du das Objekt freigeben, dann zeigt der Eintrag der Objektliste an der Stelle ins Nirvana, weil das Objekt weg ist. Daher würde ein späterer Zugriff auf das Objekt krachen.

Ausserdem hat die TObjectlist die einfache Möglichkeit das man ihr sagen kann (ist sogar Standardeinstellung ->OwnsObjects), dass sie beim Entfernen eines Objektes aus der Liste, dieses auch freigibt (->Delete()). Wenn dies nicht gewünscht ist, dann kann man auch Remove() nutzen, welches das Objekt zurück gibt, den Eintrag aus der Liste entfernt aber das Objekt nicht freigibt.

MfG
Muetze1
  Mit Zitat antworten Zitat
Antwort Antwort


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 11:28 Uhr.
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