1
由於某種原因,多次調用函數'delAll'會導致Valgrind發出無效的錯誤。我不明白爲什麼,如果我調用該函數的第二次會導致程序進入while循環一次,即使它只是「全刪除」節點無效Valgrind
// p是調用
鏈表struct node{
char *str, int data, struct node *next;
}
//這是我遇到的麻煩的功能:
void delAll()
{
struct node *temp,*temp2;
temp=p;
while(temp!=NULL)
{
temp2=temp;
temp= temp->next;
free(temp2->str);
free(temp2);
}
}
free不會將值設置爲null;除了'free(temp2)'你想添加'temp2 = NULL'外。 – 2012-03-07 20:23:07
o你說得對,謝謝! – user308553 2012-03-07 20:31:23