La memoria allocata usando le funzioni malloc e calloc non viene deallocata da sola. Quindi viene utilizzato il metodo libero, ogni volta che avviene l'allocazione dinamica della memoria. Aiuta a ridurre lo spreco di memoria liberandolo.
Come viene liberata la memoria allocata?
In C, la funzione di libreria malloc viene utilizzata per allocare un blocco di memoria nell'heap. Il programma accede a questo blocco di memoria tramite un puntatore restituito da malloc. Quando la memoria non è più necessaria, il puntatore viene passato a free che dealloca la memoria in modo che possa essere utilizzata per altri scopi.
Cosa succede se non liberi la memoria allocata?
Nella maggior parte dei casi, deallocare memoria appena prima dell'uscita dal programma è inutile. Il sistema operativo lo rivendicherà comunque. Free toccherà e impagina gli oggetti morti; il sistema operativo non lo farà. Conseguenza: fare attenzione ai "rilevatori di perdite" che contano le allocazioni.
L'allocazione della memoria è costosa?
Una misurazione ingenua del costo dell'allocazione e della liberazione di grandi blocchi di memoria concluderebbe che costa circa 7,5 μs per ogni coppia alloc/free. Tuttavia ci sono tre costi per MB separati per allocazioni di grandi dimensioni.
Può riallocare lo spazio di memoria allocato se sì come?
La funzione realloc alloca, rialloca o libera il blocco di memoria specificato da old_blk in base alle seguenti regole: Se old_blk è NULL, un nuovo blocco di memoria di dimensioni byte èassegnato. Se la dimensione è zero, viene chiamata la funzione free per rilasciare la memoria puntata da old_blk.