Funktsioonide malloc ja calloc abil eraldatud mälu ei eraldata eraldi. Seetõttu kasutatakse free meetodit alati, kui toimub dünaamiline mälu jaotamine. See aitab vähendada mälu raiskamist, vabastades selle.
Kuidas eraldatud mälu vabastatakse?
C-s kasutatakse teegi funktsiooni malloc kuhja mäluploki eraldamiseks. Programm pääseb sellele mäluplokile juurde kursori kaudu, mille malloc tagastab. Kui mälu pole enam vaja, suunatakse kursor vabale, mis eraldab mälu, et seda saaks kasutada muudel eesmärkidel.
Mis juhtub, kui te ei vabasta eraldatud mälu?
Enamasti on mälu eraldamine vahetult enne programmist väljumist mõttetu. OS nõuab selle niikuinii tagasi. Tasuta puudutab surnud objekte ja lehitseb neid; OS seda ei tee. Tagajärg: olge ettevaatlik "lekkedetektoritega", mis loevad eraldisi.
Kas mälu eraldamine on kallis?
Suurte mäluplokkide eraldamise ja vabastamise kulude naiivne mõõtmine võib järeldada, et see maksab umbes 7,5 μs iga eraldatud/vaba paari kohta. Suurte jaotuste puhul on aga kolm eraldi tasu MB kohta.
Kas saab eraldatud mäluruumi uuesti vabastada, kui jah, kuidas?
Realloc funktsioon eraldab, jaotab ümber või vabastab vana_blk määratud mäluploki järgmiste reeglite alusel: Kui old_blk on NULL, siis uus mäluplokk suurusega bait oneraldatud. Kui suurus on null, kutsutakse välja vaba funktsioon, et vabastada mälu, millele viitas vana_blk.