verkette Liste - Accesviolation
-
HI ich habe eine einfach verkettete Liste, die ich mit werten Fülle;
Beim löschen der Liste kommt es dann allerdings zu einer Access Violation, obwohl laut debugger der Pointer auf einen Wert zeigt, den ich vorher reserviert habe und dessen Inhalt noch immer der gleiche ist!!hier der Code:
while(m_Functionlist->next!=0) //until the list is empty { temp=m_Functionlist; while(temp->next->next!=0) temp=temp->next; //start freeing memory if(temp->next->Param!=0) //free Param-Memory free(temp->next->Param); if(temp->next->Testname!=0) //free Testname-Memory free(temp->next->Testname); //HIER bekomme ich die Access violation, allerdings erst beim 3. mal (laut Debugger gültige werte!!!) free(temp->next); //free Structure-Memory temp->next=0; //set Pointer to zero }
-
free ??
sieht mir sehr nach C aus.
Verschoben.
-
Warum machst dus eigentlich so umständlich? Dein Code skaliert quadratisch. Machs besser so:
/* cur_p, next_p seien node-pointer, wie temp in deinem Code */ next_p = m_Functionlist; while(next_p != 0) { cur_p = next_p; next_p = cur->next; if(cur_p->Param != 0) free(cur_p->Param); if(cur_p->Testname != 0) free(cur_p->Testname); free(cur_p); }
Anonsten würde ich vermuten, dass du an einer Stelle vergessen hast, Testname zu initialisieren (das Ding zeigt nicht automatisch auf NULL).
-
danke, hätte ich eigentlich auch drauf kommen könne
Nein, ist 100%ig initialisiert und wie gesagt, laut debugger auch gültige daten!