Memoria alocată folosind funcțiile malloc și calloc nu este de-alocată singură. Prin urmare, se folosește metoda free, ori de câte ori are loc alocarea dinamică a memoriei. Ajută la reducerea risipei de memorie prin eliberarea acesteia.
Cum este liberată memoria alocată?
În C, funcția de bibliotecă malloc este utilizată pentru a aloca un bloc de memorie pe heap. Programul accesează acest bloc de memorie printr-un pointer pe care îl returnează malloc. Când memoria nu mai este necesară, indicatorul este transmis la free care dealoca memoria astfel încât să poată fi utilizată în alte scopuri.
Ce se întâmplă dacă nu eliberați memoria alocată?
În majoritatea cazurilor, dealocarea memorie chiar înainte de ieșirea din program este inutilă. OS îl va revendica oricum. Free va atinge și va pagina obiectele moarte; sistemul de operare nu va. Consecință: aveți grijă cu „detectoarele de scurgeri” care contorizează alocările.
Este costisitoare alocarea memoriei?
O măsurare naivă a costului alocării și eliberării de blocuri mari de memorie ar concluziona că costă aproximativ 7,5 μs pentru fiecare alocare/ pereche gratuită. Cu toate acestea, există trei costuri separate pe MB pentru alocările mari.
Realloc poate elibera spațiul de memorie alocat, dacă da, cum?
Funcția realoc alocă, realocă sau eliberează blocul de memorie specificat de old_blk pe baza următoarelor reguli: Dacă old_blk este NULL, un nou bloc de memorie de dimensiunea octeților estealocat. Dacă dimensiunea este zero, funcția liberă este apelată pentru a elibera memoria indicată de old_blk.