In realtà essere in ordine può essere interessante quando il programma si evolve. Ti obbliga a scrivere la funzione di pulizia quando crei le funzioni di "inizializzazione". Il vantaggio arriva quando il programma diventa più complesso e si desidera riavviare parte del programma. Se hai già scritto delle funzioni di pulizia, è meno probabile che tu abbia improvvisamente dimenticato qualche ripulitura quando "riavvii" una parte del tuo programma.
La pulizia delle funzioni di scrittura "pigramente" vale a dire solo quando è necessaria è più soggetta a errori. Scrivere le funzioni di pulizia ti costringe a pensare alla pulizia e alla dipendenza finale dalla pulizia. Permette un più facile riutilizzo del codice di una parte del tuo codice in un altro progetto.
Quindi sì liberare in un atexit è inutile, e così è la chiusura del descrittore di file.Tuttavia, la scrittura e il mantenimento della funzione di pulitura man mano che il codice cresce può costituire un vincolo che ti costringerà a pensare a ciò che stai facendo
Suona come un duplicato, vedi http://stackoverflow.com/questions/2213627/when-you- uscita-ac-application-is-the-malloc-ed-memory-automaticamente-liberato. – unwind