Zitat von
alleinherrscher:
Die sind eben immer mit aComputer.NextComputer.NextComputer.... usw. verknüpft.
Wenn ich jetzt einen Pointer lösche, setzte ich jetzt den Vorgänger des zu löschenden Pointers auf den Nachfolger des zu löschenden Pointers.
Danach versuche ich mit freeandnil(zulöschenderPointer) noch ein bisschen aufzuräumen,
aber bekomme immer Speicherverletzungen!!!
ist doch klar.
Du hast das zu löschende Element schon aus der Liste rausgenommen.
Also kommst Du nicht mehr an dieses Element dran. Wie willst Du es löschen?
Lösung:
Du gehst die Liste solange durch, bis du das Element vor dem zu löschenden Element gefunden hast.
Jetzt merkst Du Dir den Nachfolger des zu löschenden Elements in einer temporären Variablen.
Nun kannst du mit Free (Element.NextComputer) oder Delete (Element.NextComputer) das zu löschende Element löschen und dann die Liste neu verknüpfen (mit Hilde der temp.Variablen).
Ob Du Free oder Delete oder was anderes benötigst, hängt davon ab, wie Du die Elemente erzeugst.
Klaus E.
Linux - das längste Text-Adventure aller Zeiten...
Wer nie Linux mit dem vi konfiguriert hat, der hat am Leben vorbei geklickt.