ft_lstdelone

Subject

Nome da função: ft_lstdelone

Protótipo: void ft_lstdelone(t_list lst, void (del)(void *));

Parâmetros:

  • #1. O elemento a ser liberado (free).
  • #2. O endereço da função usada para deletar o conteúdo.

Valor de retorno: Nenhum.

Funções externas: free.

Descrição: Recebe como um parâmetro um elemento e libera a memória do conteúdo do elemento usando a função ‘del’ dada como parâmetro e libera o elemento. A memória do ‘next’ não deve ser liberada.

Rascunho

A descrição já explica bem o que deve ser feito. Se fizéssemos um main assim:

static bool        g_delone_called;

void            lstdelone_f(void *d) {
    free(d);
    g_delone_called = true;
}

int main() {
  t_list    *l = lstnew(malloc(10));

  g_delone_called = false;
  ft_lstdelone(l, lstdelone_f);

  return 0;
}

O resultado seria:

Criando uma lista
Após lstdelone

Código

void	ft_lstdelone(t_list *lst, void (*del)(void *))
{
	del(lst->content); //deletando o conteúdo do elemento
	free(lst); //liberando a memória
	lst = NULL; //deixando ela nula
}

Deixe um comentário