Hi!
Ich hab mal wieder ne Frage:
Das Problem:Code:#include <iostream> #include <string> using namespace std; struct ListEntry { public: string name; string vorname; ListEntry *next; }; struct ListEntry *next = NULL; struct ListEntry *anfang = NULL; void AddEntry (string namein, string vornamein) { struct ListEntry *zeiger; //Prüfen ob bereits eine Liste angefangen wurde if(anfang == NULL) { //Speicher für ein Element reservieren if((anfang = (struct ListEntry *)malloc(sizeof(struct ListEntry)*20)) == NULL) cout << "Kein Speicher verfuegbar!" << endl; anfang->name = namein; anfang->vorname = vornamein; anfang->next=NULL; } else { zeiger=anfang; while(zeiger->next != NULL) zeiger=zeiger->next; if((zeiger->next = (struct ListEntry *)malloc(sizeof(struct ListEntry))) == NULL) cout << "Kein Speicher verfuegbar!" << endl; zeiger=zeiger->next; zeiger->name = namein; zeiger->vorname = vornamein; zeiger->next = NULL; } }
Die Strings im Struct 'ListEntry' können nicht gefüllt werden. Das Programm produziert Segfaults wenn er auf die Variablen schreiben will.
Ich glaube das Problem liegt darin das mit malloc nicht genug speicher reserviert wird bzw. dieses ein Problem mit den Strings hat, da diese ja dynamisch vergrößert bzw. verkleinert werden.
Wie bekomm ich das nun hin den Speicher für ein Listenelement so zu allozieieren das ich auf die Strings problemlos schreiben kann?
PS: wenn ich den typ 'int' verwende geht alles so wie ich es will. Aber ich brauche ja Strings.
Grüße Markus
Lesezeichen