memory management - Invalid free Valgrind -


for reason calling function 'delall' more once cause invalid free error valgrind. don't understand why if call function second time cause program go while loop again though "delall" of node

//p linked list call

struct node{ char *str, int data, struct node *next; } 

//here's function having trouble with:

void delall() {  struct node *temp,*temp2; temp=p; while(temp!=null) {      temp2=temp;     temp= temp->next;      free(temp2->str);     free(temp2);  }  } 

p pointer list, , right still after delall call point (free'd) start of list. i'd do;

p=null; 

...right after while loop set p null (ie have list cleared). prevent delall trying free elements again.

of course depend on p not being temporary variable, i'm assuming it's real "start of list" pointer.


Comments

Popular posts from this blog

delphi - How to convert bitmaps to video? -

jasper reports - Fixed header in Excel using JasperReports -

python - ('The SQL contains 0 parameter markers, but 50 parameters were supplied', 'HY000') or TypeError: 'tuple' object is not callable -