ich den folgenden Code-Snippet haben:C Malloc Laufzeitfehler
typedef struct person {
char *first ;
char *last ;
char *location ;
struct person *next_person ;
} person ;
person *make_person(char *first, char *last, char *location) {
person *personp = (person*) malloc(sizeof(struct person));
personp->first = (char*) malloc(sizeof(strlen(first) + 1));
personp->last = (char*) malloc(sizeof(strlen(last) + 1));
personp->location = (char*) malloc(sizeof(strlen(location) + 1));
strcpy(personp->first, first);
strcpy(personp->last, last);
strcpy(personp->location, location);
personp->next_person = NULL;
return personp ;
}
Wenn ich es mit dem Rest meines Codes integrieren, es beginnt mit der Ausführung schreitet dann ausrasten.
*** glibc detected *** ./level1: free(): invalid next size (fast): 0x0804a188 ***
Irgendeine Idee, was schief läuft? Ich habe das Gefühl, dass es mit meinem Malloc zu tun hat.
Stil: Warum werfen Sie den zurückgegebenen Zeiger explizit aus 'malloc'? In C ist das nicht nötig und kann sogar Probleme verstecken. Und was ist ein 'Lied'? Wo "frei" Sie Ihre Hinweise? – birryree
Neugierig: Warum versteckt es Probleme? Und tut mir leid wegen dem "Lied". Ich habe das Problem modifiziert und das verpasst. Ich entschuldige mich. – Mike
vergessen Sie nicht zu überprüfen, malloc erfolgreich zugeordnet – dubnde