
paulo1205
(usa Ubuntu)
Enviado em 18/03/2020 - 11:12h
perfection escreveu:
Eu olhei por ai alguns códigos usando o free e entendo em alguns pontos que ele é necessário MAS...
Minha dúvida é saber se realmente preciso declarar ele em situações como no exemplo abaixo!
Tudo o que faço nesse programa é pegar um texto, imprimir e saio do programa!
Então penso: Acabou o programa, ele não existe mais na memória do PC. Certo?
Então porque precisaria usar o free se tudo foi encerrado com o término do programa?
Se você souber que seu sistema vai efetivamente liberar todos os recursos, você pode omitir desalocações de memória, fechamentos de arquivos liberações de canais de rede etc.
Entretanto, do ponto de vista da linguagem C, o que o seu sistema operacional vai fazer depois que o seu programa acabar é desconhecido, indeterminado. É possível, portanto, que exista uma máquina ou sistema em que, após um programa acabar, não haja liberação automática de recursos.
Quando você escreve um programa em C usando apenas os recursos que o padrão estabelece, é de se esperar que o programa vai produzir os mesmos resultados em qualquer máquina capaz de rodar programas em C, seja ela o seu PC, o celular do seu filho, o meu antigo Apple II ou o professor que demonstra manualmente o funcionamento do programa em C para os alunos usando apenas um quadro-negro, giz e apagador. Desse modo, você, como programador, tem de fazer a sua parte para alcançar o objetivo esperado de produzir os mesmos resultados, e essa parte consiste em seguir as convenções que o padrão também apresenta, e uma dessas convenções é liberar a memória que tenha sido manualmente alocada.
... “Principium sapientiae timor Domini, et scientia sanctorum prudentia.” (Proverbia 9:10)