Moin!
Deine Vermutung ist richtig - du hast nach der Zuweisung 2 Variablen die beide auf ein und dieselbe Instanz verweisen. Daher ist ein Free bei einer der Variablen gleichzeitig der Tod der anderen Variable - sie zeigt ja auf die gleiche Stelle.
Um eine Instanz ordentlich zu kopieren solltest du dir einen Copy Constructor anlegen - also ein Konstruktor der als Parameter eine Instanz gleichen Typs annimmt und dann darin alle Daten kopiert.
Beispiel:
Delphi-Quellcode:
Type
TBeispiel = Class
Private
fDaten : Integer;
fAnderes : String;
Public
Constructor Create; Overload;
Constructor Create(ABeispiel : TBeispiel); Overload;
End;
....
Constructor TBeispiel.Create(ABeispiel : TBeispiel);
Begin
Inherited Create; // muss man nicht, ich weiss, ich mach's trotzdem
fDaten := ABeispiel.fDaten;
fAnderes := ABeispiel.fAnderes;
End;
MfG
Muetze1