Je cherche a cataloguer les situations de fuites de mémoire, et des moyens de les éviter. Pour l'instant, les cas suivants de fuite me viennent à l'esprit:
* un pointeur est annulé (NULL), sa cible n'est pas libérée (et elle n'est pas pointée par ailleurs)
* dans une structure liée (arbre, liste...), un ou plusieurs noeuds sont retirés ou "coupés" et pas libérés
* une donnée temporaire est alloué sur le tas (genre tableau dynamique) dans une fonction et pas (encore) libéré lors du return
* un pointeur change de valeur (d'adresse), sa cible précédente n'est pas libérée
En fait tous ces cas se recoupent, il s'agit toujours d'une cible qui n'est plus pointée/utilisée/accessible. Voyez-vous d'autres cas?

Alors, comment éviter cela, sachant la (fameuse) faillibilité humaine? comment faites vous vous-même? Le seul cas qui me semble évitable malgré cette faillibilité est le premier: il "suffit" de toujours lier libération de mémoire et annulation de pointeur --ce qui d'ailleurs évite en même temps les pointeurs dangling (quel est le terme consacré en français? je verrais bien flottant). Des outils d'analyse sont-ils utiles? fiables? Aussi, comment fait-on pour seulement savoir qu'il y a une fuite?

Merci,
denis