In C, wenn Ihre Stimulus_tc
Liste innerhalb des struct Frame_tc
Wrapper ist keine traditionelle Kopf/Schwanz Liste (zB mit den endgültigen ->Next = NULL
), aber mit der Anzahl der Knoten in list->sSize
enthalten ist, könnten Sie etwas ähnliches wie die folgenden tun:
/* free all nodes in struct Frame_tc->Stimulus_tc list */
void free_list (struct Frame_tc *list)
{
Stimulus_tc *iter = list->sList; /* pointer to iterate list */
Stimulus_tc *victim = NULL; /* pointer to node to delete */
int n = list->sSize; /* number of nodes to delete */
if (iter == NULL) {
fprintf (stderr,"print_list() warning: empty list.\n");
return;
}
while (n--) { /* free n nodes */
victim = iter;
iter = iter->Next;
free (victim);
}
}
Wenn Sie die letzten Next
Zeiger auf NULL
setzen, können Sie int n = list->sSize;
beseitigen und einfach über die Liste iterieren mit while (iter) { ...
Wenn es zusätzlichen poi waren nter Elemente innerhalb jedes Knotens, die zugewiesen wurden, würden Sie einfach free
diese Werte vor free (victim);
Schauen Sie es sich an und lassen Sie mich wissen, wenn Sie irgendwelche Fragen haben.
Für jedes "malloc" sollte genau ein "frei" sein. – user3386109
Wenn dies eine C++ Frage ist, sollten Sie 'new' und' delete' verwenden, nicht 'malloc()' und 'free()'. Oder besser noch eine Sammlung. – EJP
Warum ist das C++ markiert? – MrEricSir