Atmintis, skirta naudojant funkcijas malloc ir calloc, savaime nepanaikinama. Todėl nemokamas metodas naudojamas kiekvieną kartą, kai vyksta dinaminis atminties paskirstymas. Tai padeda sumažinti atminties eikvojimą ją atlaisvindama.
Kaip atlaisvinama skirta atmintis?
C kalboje bibliotekos funkcija malloc naudojama atminties blokui priskirti krūvoje. Programa pasiekia šį atminties bloką per žymeklį, kurį grąžina malloc. Kai atminties nebereikia, žymiklis perkeliamas į free, kuris atlaisvina atmintį, kad ją būtų galima naudoti kitiems tikslams.
Kas nutiks, jei neatlaisvinsite skirtos atminties?
Daugeliu atvejų panaikinti atmintį prieš pat išjungiant programą yra beprasmiška. OS vis tiek ją susigrąžins. Free palies ir perkels negyvus objektus; OS nebus. Pasekmė: būkite atsargūs su „nuotėkio detektoriais“, kurie skaičiuoja paskirstymus.
Ar brangu skirti atminties?
Naivus didelių atminties blokų paskirstymo ir atlaisvinimo sąnaudų įvertinimas leistų daryti išvadą, kad kiekviena paskirstymo/nemokama pora kainuoja apie 7,5 μs. Tačiau dideliems skyrimams taikomi trys atskiri mokesčiai už MB.
Ar galima iš naujo atlaisvinti skirtą atminties vietą, jei taip, kaip?
Funkcija „realloc“paskirsto, perskirsto arba išlaisvina old_blk nurodytą atminties bloką pagal šias taisykles: Jei old_blk yra NULL, naujas baitų dydžio atminties blokas yrapaskirta. Jei dydis lygus nuliui, nemokama funkcija iškviečiama atlaisvinti atmintį, kurią nurodė old_blk.