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:


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
}