Je crois que la réponse est non, ne permettez jamais une fuite de mémoire, et j'ai quelques raisons que je n'ai pas vues explicitement énoncées. Il y a de grandes réponses techniques ici mais je pense que la vraie réponse dépend de raisons plus sociales / humaines.
(Tout d'abord, notez que, comme d'autres l'ont mentionné, une véritable fuite se produit lorsque votre programme, à tout moment, perd la trace des ressources mémoire qu'il a allouées. En C, cela se produit lorsque vous accédez malloc()
à un pointeur et laissez ce pointeur quitter la portée sans faire de free()
première.)
Le nœud important de votre décision ici est l'habitude. Lorsque vous codez dans un langage qui utilise des pointeurs, vous allez utiliser beaucoup de pointeurs . Et les pointeurs sont dangereux; ils sont le moyen le plus simple d'ajouter toutes sortes de problèmes graves à votre code.
Lorsque vous codez, parfois vous allez être sur le ballon et parfois vous allez être fatigué ou fou ou inquiet. Pendant ces moments quelque peu distraits, vous codez davantage sur le pilote automatique. L'effet du pilote automatique ne fait pas la différence entre un code unique et un module dans un projet plus vaste. Pendant ces périodes, les habitudes que vous établissez sont celles qui se retrouveront dans votre base de code.
Donc non, ne permettez jamais de fuites de mémoire pour la même raison que vous devriez toujours vérifier vos angles morts lorsque vous changez de voie, même si vous êtes la seule voiture sur la route en ce moment. Pendant les moments où votre cerveau actif est distrait, de bonnes habitudes sont tout ce qui peut vous éviter des faux pas désastreux.
Au-delà du problème de «l'habitude», les pointeurs sont complexes et nécessitent souvent beaucoup de puissance cérébrale pour être suivis mentalement. Il est préférable de ne pas «brouiller l'eau» quand il s'agit de votre utilisation des pointeurs, en particulier lorsque vous êtes nouveau dans la programmation.
Il y a aussi un aspect plus social. En utilisant correctement malloc()
et free()
, toute personne qui regarde votre code sera à l'aise; vous gérez vos ressources. Si vous ne le faites pas, cependant, ils suspecteront immédiatement un problème.
Peut-être que vous avez compris que la fuite de mémoire ne fait rien de mal dans ce contexte, mais chaque responsable de votre code devra également le comprendre dans sa tête lorsqu'il lira ce morceau de code. En utilisant, free()
vous supprimez la nécessité de même considérer le problème.
Enfin, la programmation consiste à écrire un modèle mental d'un processus dans un langage non ambigu afin qu'une personne et un ordinateur puissent parfaitement comprendre ce processus. Un élément essentiel d'une bonne pratique de programmation n'est jamais d'introduire une ambiguïté inutile.
La programmation intelligente est flexible et générique. Une mauvaise programmation est ambiguë.