Zitat von
SirThornberry:
naja, macht es überhaupt sinn das gesammte Object abzuspeichern? Wozu braucht man dann Constructor, Destructor etc. beim abspeichern. Wäre es nicht sinnvoller gewesen nur die Werte zu speichern die auch wirklich gespeichert werden müssen?
Wird doch gemacht.
Die Methoden auf dem Objekt liegen sowieso nie im Objekt selber, sondern nur einmal im kompletten Programm. Die
RTTI weiss wo die Methode liegt, im Objekt selber liegt - wenn überhaupt, das weiss ich leider nicht zu 100% - ein Pointer auf den ausführbaren Codebereich.
Deswegen muss bei Methoden ja auch immer ein Pointer auf den Datenbereich der aufrufenden Instanz als erster (versteckter) Parameter an den Codebereich übergeben werden, damit man überhaupt auf den Properties des richtigen Objektes arbeitet.
Das hat auch den manchmal unangenehmen Nebeneffekt, das man Methoden auf Objekten aufrufen kann, die schon freigegeben sind. - Wenn diese Methoden nicht auf Properties des Objektes zugreifen sondern z.B. reine Berechnungen auf den Parametern machen, dann funktioniert das sogar. Nur wenn ein Property geändert werden soll, dann kommt es zu einer Speicherschutzverletzung, weil der Speicher für das Objekt ja schon bei der Freigabe an das
OS zurückgegeben wurde.