Atmiņa, kas piešķirta, izmantojot funkcijas malloc un calloc, pati par sevi netiek atdalīta. Līdz ar to free metode tiek izmantota ikreiz, kad notiek dinamiskā atmiņas piešķiršana. Tas palīdz samazināt atmiņas zudumu, atbrīvojot to.
Kā tiek atbrīvota piešķirtā atmiņa?
C valodā bibliotēkas funkcija malloc tiek izmantota, lai kaudzītē piešķirtu atmiņas bloku. Programma piekļūst šim atmiņas blokam, izmantojot rādītāju, ko malloc atgriež. Kad atmiņa vairs nav nepieciešama, rādītājs tiek nodots uz free, kas atdala atmiņu, lai to varētu izmantot citiem mērķiem.
Kas notiks, ja neatbrīvosit piešķirto atmiņu?
Vairumā gadījumu atmiņas atdalīšana tieši pirms programmas iziešanas ir bezjēdzīga. OS jebkurā gadījumā to atgūs. Bezmaksas pieskarsies un lappusi mirušos objektus; OS to nedarīs. Sekas: esiet piesardzīgs ar "noplūdes detektoriem", kas uzskaita piešķīrumus.
Vai atmiņas piešķiršana ir dārga?
Naivs lielu atmiņas bloku piešķiršanas un atbrīvošanas izmaksu mērījums ļautu secināt, ka tas maksā apmēram 7,5 μs par katru piešķirto/bezmaksas pāri. Tomēr lieliem piešķīrumiem ir trīs atsevišķas izmaksas par MB.
Vai var atkārtoti atbrīvot piešķirto atmiņas vietu, ja jā, kā?
Funkcija Realloc piešķir, pārdala vai atbrīvo old_blk norādīto atmiņas bloku, pamatojoties uz šādiem noteikumiem: Ja old_blk ir NULL, jauns baitu lieluma atmiņas bloks. irpiešķirts. Ja lielums ir nulle, tiek izsaukta bezmaksas funkcija, lai atbrīvotu atmiņu, uz kuru norāda old_blk.