[so] [Tema1][General] Neclaritate enunt: verificare valori întoarse de funcțiile malloc/calloc/fopen/realloc

Darius Mihai dariusmihaim at gmail.com
Thu Feb 28 11:21:30 EET 2019


On Thu, Feb 28, 2019 at 10:53 AM Valentin Ilie via so
<so at cursuri.cs.pub.ro> wrote:
>
> On Thu, 28 Feb 2019 at 10:12, Alex Rotaru via so <so at cursuri.cs.pub.ro> wrote:
> > In tema sunt testate leak-urile de memorie. Daca programul esueaza la al doilea apel malloc si apelezi exit va ramane leak-ul de la primul apel malloc.
>
> Cum va rămâne leak-ul? Sistemul de operare face curățenie după un
> proces în momentul în care va apela exit(..).
>
> --Valentin

Salut,

Doar pentru că există personalul auxiliar care poate să curețe în urma
ta, nu înseamnă că ți se permite să arunci gunoi oriunde. La fel,
abordarea în programare este că trebuie să te asiguri că nu există
date de care nu te-ai ocupat atunci când termini execuția.

Acum tu ai plecat de la premiza "este un program simplu, se poate face
exit oricând". În general bine să pleci de la premiza că ce scrii se
poate refolosi, iar un exit pus în cod poate produce efecte
neașteptate.

În plus, (chiar dacă nu este valabil în particular în acest caz) în
caz de eroare se poate să vrei să faci logging, să închizi conexiuni
către alte sisteme, să ștergi (prin umplere cu 0) a unor buffere cu
date importante (ex. parole), etc.

Buttom line, exit în mijlocul programului ar trebui folosit doar în
cazuri extreme, când programul nu mai poate funcționa oricum. Este
similar cu folosirea SIGKILL abuziv [1].

[1]: https://www.facebook.com/nixcraft/posts/2287275314619167/

Darius Mihai


More information about the so mailing list