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?
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?
chcesz dorwać się do czegoś spod zwolnionej pamięci, ub.
No właśnie, jakaś podpowiedź jak się za to zabrać?
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;
}
Jedno z:
*
while(head)
{
tmp=head;
head=tmp->next;
free(tmp);
}
while(head)
{
tmp=head->next;
free(head);
head=tmp;
}
Dziękuję, problem rozwiązany.