Le cast du malloc est inutile !
Et il serait judicieux de ne pas appeler ta structure du même nom le pointeur 
struct liste * l_liste = malloc(sizeof(liste));

Envoyé par
m@tix
Par contre, est-il vraiment nécessaire de faire une fonction pour la détruire? Si oui pourquoi? Aussi, pourquoi avoir choisi de retourner la liste? Enfin, que retourne exactement cette fonction, et pourquoi?
Ah, si, autre chose: la condition if(liste != NULL) est-elle vraiment indispensable? Après tout, vu que la liste vient tout juste d'être crée, à priori elle est vide non? Et puis même si ce n'était pas le cas (et justement j'ai envie de dire..), pourquoi ne pas l'initialiser?
Oui, toute mémoire allouée avec un malloc doit être libérée.
Si tu ne retournes pas la liste, ta structure est créée dans la fonction et est accessible ... nul part :p
D'où l'intérêt de renvoyer un pointeur sur cette structure 
Elle renvoie un pointeur sur 'struct liste'.
Oui, la condition est nécessaire, parce qu'un malloc peut échouer et donc ton programme planterais 
La liste viens d'être créée oui, mais comme elle a été allouée dynamiquement par un malloc elle contient n'importe quoi, d'où la nécessité d'initialiser les champs à NULL. Tu peux aussi utiliser calloc à la place de malloc qui initialise la mémoire allouée à 0.
Voilà, je crois que j'ai répondu à toutes tes questions
Partager