free Liste
-
Hallo,
ich bräuchte dringend mal nen Tipp wie man ne einfach verkettete Liste free setzt. Mein Versuch:void deleteCompleteList () { struct list *runner; runner = start; while(runner != NULL) { free(runner); runner = runner -> next; } }
Start ist der globale Headpointer der Liste.
Leider liefert dieser Code nen seg fault...
-
{ free(runner); runner = runner -> next; } }
du free()'st und greifst danach auf den gefreed()'ten pointer zu :xmas1:
-
Oh ja, jetzt wo dus sagst. Is klar, dass das nur Müll werden kann.
D.h. ich muss immer das Element vor dem Pointer runner freen?
-
config schrieb:
Oh ja, jetzt wo dus sagst. Is klar, dass das nur Müll werden kann.
D.h. ich muss immer das Element vor dem Pointer runner freen?mach einfach eine extra funktion delete_current_head() die dir den aktuellen kopf der liste löscht, vorher aber den globalen head auf den nächsten listenmember setzt, wenn dieser nicht existiert dann head = 0; dann musst du delete_current_head() eben solange aufrufen bis head == 0 ist :xmas1:
-
Klingt selbst für mich verständlich. Ich hätts jetzt wieder maximal kompliziert gemacht. Danke.
-
Funktioniert jetzt alles super. Danke für den Hinweis! :xmas1: