Klassen auf hd schreiben
-
Hallo,
Ich bin ein blutiger noob was c++ betrifft und bin auf eine Frage gestossen die ich nicht lösen konnte:
Zur Programmlaufzeit definiere ich eine Klasse (davon auch Objekte) -> Diese dinger werden (vermutlich, bin mir nicht sicher) auf den Stack geschrieben, also auf den Ramspeicher.
Ich möchte nun Klassen und Objekte beim nächsten Programmstart wieder so vorfinden wie als ich das Programm beendet hab. Ist es möglich (nicht theoretisch sondern praktisch) dass ich den Stack kopiere und dann auf die HD speichere sodass ich beim nächsten Programmstart den Stack gleich wiederherstellen kann?
Wenn ja, gibts dazu eine Bibliothek oder eine Hilfe?
Vielen Dank für die Hilfe schon zum voraus.
Gruss Alderan
-
Zur Programmlaufzeit definiere ich eine Klasse
Wie soll das gehen?
-
Wie gesagt, blutiger anfänger... geht definiere ich (eigentlich das Programm das ich geschreiben habe) ein Objekt?
-
Hallo,
google mal nach dem Begriff "Serialisieren".
MfG
-
ein paar Hinweise:
1. da die Objekte dynamisch alloziert werden, befindet sich der Speicherberich auf dem Heap und nicht auf dem Stack. (dort findest du lediglich einen Zieger, zu dem entsprechenden Speicherbereich)
2. den Stack zu dumpen ist eine scheiss idee, weil:
1. wird er zur Laufzeit nicht nur von deinem Programm genutzt sondern von allen Prozessen. Wenn du nun den Stack mit pop() abbaust (müsstest mit __asm programmieren) baust du den Stack ab(!) und alle Infos gehen verloren.
2. kann nur eine privilegierter Prozess den Stack auslesen3. die Lösung sind file streams.
#include <fstream> char* filename = "c:\\test.dat"; fstream file; file.open(filename, ios::out); if(file) { file << deinObjekt; } file.close();
das kannst du nicht genau so übernehmen, gibt allerdings eine Idee wie du es realisieren kannst. Um wieder aus einer Datei zu lesen muss, dass Ios Flag auf 'in' gesetzt werden.
auch das if(file) klappt nicht mit jedem kompiler, versuch dann if(!file)...else