On 8 March 2016 at 13:48, Raluca Caciula via so <[email protected]> wrote: > Buna ziua, > > Am testat, (pentru fiecare test) tema si outputul dat de valgrind este: > ==7957== Memcheck, a memory error detector > ==7957== Copyright (C) 2002-2013, and GNU GPL'd, by Julian Seward et al. > ==7957== Using Valgrind-3.10.1 and LibVEX; rerun with -h for copyright info > ==7957== Command: ./tema1 56 ./_test/inputs/test1.in > ==7957== > ==7957== > ==7957== HEAP SUMMARY: > ==7957== in use at exit: 0 bytes in 0 blocks > ==7957== total heap usage: 5 allocs, 5 frees, 1,056 bytes allocated > ==7957== > ==7957== All heap blocks were freed -- no leaks are possible > ==7957== > ==7957== For counts of detected and suppressed errors, rerun with: -v > ==7957== ERROR SUMMARY: 0 errors from 0 contexts (suppressed: 0 from 0) > > Pentru tratarea erorilor am folosit functia DIE(), insa daca a aparut o > eroare, > nu mai realizez dezalocarea memoriei alocate pana in momentul de fata. Este > aceasta o > problema? >
Intr-adevar, daca folosesti DIE (sau assert) nu se elibereaza corect toata memoria in majoritatea cazurilor. Cel mai corect mod este cel indicat aici [1]. Din punctul meu de vedere, verificarea fiecarui apel de sistem dupa erori e mai important decat eliberarea resurselor. Totusi sa tii minte, pe viitor, ca in unele sisteme a nu aborda ca in [1] te poate costa (in cel mai fericit caz!) un reboot al sistemului, ceea ce nu e niciodata placut :) Asigura-te ca daca codul tau nu intoarce nici o eroare/exceptie/DIE/assert toate resursele sunt eliberate si nu vom depuncta in acest caz. [1] http://ocw.cs.pub.ro/courses/so/laboratoare/resurse/die#alta_abordare -- Cu stimă, Mihai Bărbulescu _______________________________________________ http://ocw.cs.pub.ro/courses/so/info/lista-discutii
