001
30.09.2008, 03:26 Uhr
0xdeadbeef
Gott (Operator)
|
Uh...indem du die Werte der Variablen speicherst, nicht ihre Speicheradressen? Jedenfalls werden, was die Speicheradressen angeht, beim Neustart des Programms die Karten neu gemischt - mit den Adressen eines vorherigen Prozesses kannst du da rein gar nichts anfangen.
Etwas derartiges kann ich mir eigentlich nur dann sinnvoll vorstellen, wenn du die relevante Speicherverwaltung von Hand machst, so a la TeX - das heißt, einen großen Speicherbereich anlegen und dann per placement new alles da reinpacken. Allerdings wirst du auch damit nicht den gesamten Programmzustand erschlagen, und die Zeiger wären ggf. immer noch relativ zur Position des Arrays, die müsstest du also vorher runterrechnen. Außerdem bringt ein solcher Ansatz seine ganz eigenen Probleme mit sich - du musst im Grunde deine eigene Heap-Verwaltung schreiben, darauf achten, dass keine Verweise aus dem Array hinausgehen (d.h., keine Stackvariablen, äußerst unangenehm), und dein Programm wäre speichermäßig auf die Größe des Arrays beschränkt.
Wie dem auch sei, das ist eigentlich nur sehr selten ein praktikabler Ansatz (für Emulatoren ist so etwas brauchbar, denn da musst du es eh machen), aller Wahrscheinlichkeit nach macht es für dich mehr Sinn, dir zu überlegen, was eigentlich einen Programmzustand darstellt, den zu speichern, und die Struktur aus den gespeicherten Werten beim Laden wieder aufzubauen. -- Einfachheit ist Voraussetzung für Zuverlässigkeit. -- Edsger Wybe Dijkstra |