Acredito que a resposta é não, nunca permita vazamento de memória e tenho alguns motivos que não vi explicitamente declarados. Existem ótimas respostas técnicas aqui, mas acho que a resposta real depende de mais razões sociais / humanas.
(Primeiro, observe que, como outros mencionados, um verdadeiro vazamento ocorre quando o programa, a qualquer momento, perde o controle dos recursos de memória alocados. Em C, isso acontece quando você direciona malloc()
um ponteiro e deixa esse ponteiro sair do escopo sem fazer uma ação free()
primeiro.)
O ponto crucial da sua decisão aqui é o hábito. Quando você codifica em um idioma que usa ponteiros, você usa muito os ponteiros . E ponteiros são perigosos; elas são a maneira mais fácil de adicionar todo tipo de problemas graves ao seu código.
Quando você está codificando, às vezes você fica com a bola e às vezes fica cansado, bravo ou preocupado. Durante esses tempos um pouco distraídos, você está codificando mais no piloto automático. O efeito do piloto automático não diferencia entre código único e um módulo em um projeto maior. Durante esses períodos, os hábitos que você estabelecer são o que acabará na sua base de código.
Portanto, nunca permita vazamentos de memória pela mesma razão que você ainda deve verificar seus pontos cegos ao mudar de faixa, mesmo se você for o único carro na estrada no momento. Durante os momentos em que seu cérebro ativo está distraído, bons hábitos são tudo o que pode salvá-lo de erros desastrosos.
Além da questão do "hábito", os indicadores são complexos e geralmente exigem muito poder do cérebro para rastrear mentalmente. É melhor não "enlamear a água" quando se trata de usar ponteiros, especialmente quando você é iniciante em programação.
Há um aspecto mais social também. Com o uso adequado de malloc()
e free()
, qualquer pessoa que consulte seu código ficará à vontade; você está gerenciando seus recursos. Caso contrário, eles suspeitarão imediatamente de um problema.
Talvez você tenha percebido que o vazamento de memória não prejudica nada nesse contexto, mas todo mantenedor do seu código também terá que resolver isso na cabeça dele quando ler esse trecho de código. Ao usar, free()
você remove a necessidade de considerar o problema.
Finalmente, a programação está escrevendo um modelo mental de processo em uma linguagem inequívoca, para que uma pessoa e um computador possam entender perfeitamente o processo. Uma parte vital das boas práticas de programação nunca é introduzir ambiguidade desnecessária.
A programação inteligente é flexível e genérica. Uma programação ruim é ambígua.