Fugriffsfehler bei Adresse ...
-
Hallo Leutz,
ich habe in Borland C++ ein Programm mit einer verketteten Liste geschrieben. Hier sollen einfach nur Name, Vorname und Betrag festgehlten werden (zu Übungszwecken).
Das Programm kann ich auch kompilieren, aber wenn ich dann folgende Funktion aufrufe, bekomm ich immer einen Fehler.Funktion:
void spende(const AnsiString& name, const AnsiString& vorname, const AnsiString& betrag) { struct data *neuespende; neuespende = (struct data*)malloc(sizeof(struct data)); if(neuespende != NULL) { neuespende->name = name; neuespende->vorname = vorname; neuespende->betrag = betrag; neuespende->next = NULL; if(anfang == NULL) { anfang = neuespende; } else { temp = anfang; while(temp->next != NULL) temp = temp->next; temp->next = neuespende; } } }
Fehlertext:
Im Programm verklist.exe ist eine Exception der Klasse EAccessViolation aufgetreten. Meldung: 'Zugriffsverletzung bei Adresse ... in Modul 'verklist.exe'. Lesen von Adresse ...'. Prozeß wurde angehalten. Mit einzelner Anweisung oder Start fortsetzen.
Wenn ich das mit OK bestätige, markiert er mir folgende Zeile:
neuespende->betrag = betrag;
Aber wenn ich diese Zeile auskommentiere, dann markiert er eine Zeile tiefer. Das geht dann so weiter bis die ganze Funktion auskommentiert ist.
MfG
Muecke
-
Verwende new statt malloc. Malloc ruft keine Konstruktoren auf. Du verwendest ja anscheinend AnsiStrings in deiner struct. Die sind dann nicht initialisiert.
Ciao
-
Kann mir einer die genaue Syntax für mein Beispiel geben? Kriege das nicht so ganz hin...
MfG
Muecke
-
struct data *neuespende = new struct data;
-
oder
data *neuespende = new data;
Das struct jedesmal davorzuschreiben ist ein Relikt aus C.
@muecke
Wie ich schonmal in eine deiner Threads bemerkt hatte (BCB-Forum): Bitte lies ein C++Tutorial. Im hiesigen Forum dürftest du einiges dazu finden.Ciao
-
Das struct jedesmal davorzuschreiben ist ein Relikt aus C.
seil lieber froh. dass er auch nicht noch malloc ausgepackt hat
-
Das hatte ich hier http://www.c-plusplus.net/forum/viewtopic-var-t-is-104182.html schon erwähnt.