[C] zwalnianie pamieci w delete dla listy jednokierunkowej

0

Witam, czy ten fragment kodu poprawnie zwalnia pamiec z danego elementu?


if(tmp->next)  //tmp->next to ten element ktory chcemy usunac
		{
			p=tmp->next;
			tmp->next=p->next;
			free(p);
		}

z gory dzieki za pomoc

0

Zaalokowałeś pamięć dla zmiennej p?

0

p i tmp to wskazniki

caly kod funkcji delete

node *delete_node(node *head, int val)
{
	node *tmp=NULL;
	node *p=NULL;

	if (head->value==val)
	{
		p=head->next;
		free(head);
		head=p;
	}
	else
	{
		tmp=search_node(head,val);

		if(tmp->next)  //tmp->next to ten element ktory chcemy usunac
		{
			p=tmp->next;
			tmp->next=p->next;
			free(p);
		}
		else
		printf("brak takiego elementu\n");
	}
	return head;
}

program dziala ok, tylko nie wiem jednego, czy zwalniam cala pamiec, ktora powinienem
0

IMHO tak ale zawsze możesz sprawdzić to przy użyciu debuggera.

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