ich habe zur Zeit eine Aufgabe für die Uni, in der ich eine eigene Shell schreiben muss.
Hab mir das so überlegt, dass ich praktisch eine 2dimensionale verkettete Liste habe.
Benutze dafür folgende structs:
Code:
struct node{ struct node *next; struct node *prev; struct argument *nextArg; int status; }; struct argument{ char *text; struct argument *nextArg; };
Das ganze klappt auch ganz gut bis auf das freigeben des Speichers.
Ich hatte es erst so versucht:
Code:
void freeList(struct node *root){ struct node *tmp = root; while ((tmp = tmp->next) != NULL) { struct argument *tmpArg = tmp->nextArg; struct argument *delArg = tmpArg; while (tmpArg != NULL) { tmpArg = tmpArg->nextArg; free(delArg); delArg=tmpArg; } free(root); root=tmp; } }
Allerdings klappt die Funktion nicht so ganz. Nach ein paar Befehlen in meiner Shell kommt dann irgendwann ein Speicherzugriffsfehler. Scheint ziemlich Random zu sein. Konnte zmdst keine Regelmäßigkeit erkennen.
Vllt kann mir jemand helfen, wie man so eine "2D Liste" gut "freen" kann.
Grüße