Zwalnianie pamięci po liście jednokierunkowej

0

Witam.
Czy zwalnianie pamięci w taki sposób jest poprawny?

for(tmp=head; tmp; tmp=tmp->nast)
	free(tmp); 

Czy jeżeli zwalniam tmp to pętla nie zgubi wskaźnika na następny element?

1

chcesz dorwać się do czegoś spod zwolnionej pamięci, ub.

0

No właśnie, jakaś podpowiedź jak się za to zabrać?

2

Technicznie nie powinieneś tak robić, praktycznie - jeśli Twój program nie jest wielowątkowy - będzie to działać, ale może wprowadzić niemiłe błędy w przyszłości :P
Ja celowałbym w taki kod:

current = head;
while (current != nullptr) {
  cośtam* next = tmp->next;
  free(current);
  current = next;
} 
3

Jedno z:
*

while(head)
  {
   tmp=head;
   head=tmp->next;
   free(tmp);
  }
while(head)
  {
   tmp=head->next;
   free(head);
   head=tmp;
  }
0

Dziękuję, problem rozwiązany.

1 użytkowników online, w tym zalogowanych: 0, gości: 1