Creo que la respuesta es no, nunca permita una pérdida de memoria, y tengo algunas razones que no he visto explícitamente. Aquí hay excelentes respuestas técnicas, pero creo que la respuesta real depende de más razones sociales / humanas.
(Primero, tenga en cuenta que, como otros mencionaron, una fuga verdadera es cuando su programa, en cualquier momento, pierde el rastro de los recursos de memoria que ha asignado. En C, esto sucede cuando se malloc()
dirige a un puntero y deja que ese puntero deje el alcance sin hacer un free()
primero.)
El quid importante de su decisión aquí es el hábito. Cuando codifica en un idioma que usa punteros, va a usar mucho los punteros . Y los punteros son peligrosos; son la forma más fácil de agregar todo tipo de problemas graves a su código.
Cuando estás codificando, a veces vas a estar en la pelota y a veces estarás cansado, enojado o preocupado. Durante esos momentos algo distraídos, estás codificando más en piloto automático. El efecto del piloto automático no diferencia entre el código único y un módulo en un proyecto más grande. Durante esos momentos, los hábitos que establezca son los que terminarán en su base de código.
Así que no, nunca permita pérdidas de memoria por la misma razón por la que aún debe revisar sus puntos ciegos al cambiar de carril, incluso si es el único automóvil en la carretera en este momento. Durante los momentos en que su cerebro activo está distraído, los buenos hábitos son todo lo que puede salvarlo de pasos en falso desastrosos.
Más allá de la cuestión del "hábito", los indicadores son complejos y a menudo requieren una gran cantidad de poder cerebral para realizar un seguimiento mental. Es mejor no "enturbiar el agua" cuando se trata de utilizar punteros, especialmente cuando es nuevo en la programación.
También hay un aspecto más social. Mediante el uso adecuado de malloc()
y free()
, cualquiera que vea su código estará tranquilo; estás administrando tus recursos. Sin embargo, si no lo hace, sospecharán de inmediato un problema.
Tal vez hayas descubierto que la pérdida de memoria no hace daño a nada en este contexto, pero todos los encargados del mantenimiento de tu código también tendrán que pensarlo cuando lea ese código. Al usarlo free()
, elimina la necesidad de considerar el problema
Finalmente, la programación es escribir un modelo mental de un proceso en un lenguaje inequívoco para que una persona y una computadora puedan entender perfectamente dicho proceso. Una parte vital de las buenas prácticas de programación es nunca introducir ambigüedades innecesarias.
La programación inteligente es flexible y genérica. La mala programación es ambigua.