Forum: Algorithmen, Datenstrukturen und Klassendesign
by enigma,
15. Apr 2017
Also ist durch FreeAndNil(obj1) der Speicher zwar freigegeben,
aber noch nicht neu belegt?
Und weshalb kann ich den Speicher über
obj1.Free mehrfach freigeben, aber nicht über obj2.Free?
procedure testFreeAndNil;
var
obj1, obj2: TestKlasse;
begin
Forum: Algorithmen, Datenstrukturen und Klassendesign
by enigma,
15. Apr 2017
Hier noch ein Beispiel,
dass der gemeinsame Speicherbereich nicht für obj1 u. obj2 freigegeben ist:
procedure testFreeAndNil;
var
Temp: TObject;
obj1, obj2: TestKlasse;
begin
obj1 := TestKlasse.Create;
Forum: Algorithmen, Datenstrukturen und Klassendesign
by enigma,
15. Apr 2017
Danke für die Antwort,
verstehe ich richtig:
Gebe ich obj1 frei, dann ist der Speicherbereich, auf den beide zeigen, ungültig?
Und wie kann ich dies für obj2 prüfen?
(s.Quellcode: obj2.ClassName wird noch ausgegeben, obj1.ClassName führt zu Fehler).
Und weshalb kann ich mehrfach hintereinander obj1.Free freigeben
u. obj2.Free kann nach obj1.Free nicht mehr freigegeben werden?
Forum: Algorithmen, Datenstrukturen und Klassendesign
by enigma,
15. Apr 2017
Hallo zusammen,
ich brauche wg. Typumwandlung ( list := TObjectList<TDN>(AObject) )
2 Objekte (also list u. AObject), die ich manuell freigeben muss.
Meine Frage (s. Quellcode):
gibt FreeAndNil(obj1) auch obj2 frei u. wenn ja, wie kann ich prüfen, ob auch
der Inhalt von obj2 aus Speicher freigegeben ist?
Und weshalb kann ich obj1 mehrfach freigeben u. obj2 nicht mehr?
Meine Idee ist: