Brīva atmiņa C ar bezmaksas funkciju

Free Memory C With Free Function



C valoda ir pietiekami efektīva, lai pārvaldītu tās atmiņas pārvaldību. Tas nozīmē, ka ikreiz, kad deklarējat jebkura veida datu regulāru mainīgo C, pati programmēšanas valoda ir atbildīga par šīs atmiņas sadalīšanu vai atbrīvošanu, tiklīdz jūsu programma ir veiksmīgi izpildīta. Tomēr dinamiskās atmiņas iedalīšanas gadījumā, tā kā atmiņu piešķirat manuāli, tāpēc tā ir jāatbrīvo arī pašam.

Bibliotēkā stdlib.h šim nolūkam ir īpaša funkcija, t.i., funkcija free (). Šodien mēs izpētīsim nepieciešamību izmantot šo funkciju C programmēšanas valodā. Pēc tam mēs apskatīsim dažus piemērus, kuros šī funkcija ir izmantota, lai manuāli atbrīvotu atmiņu C programmēšanas valodā Linux.







Nepieciešamība izmantot C brīvo funkciju sistēmas atmiņas atbrīvošanai:

Mēs visi zinām, ka mūsu datorsistēmām ir ierobežota atmiņa, tāpēc mēs nekad nevaram tajā darbināt bezgalīgas programmas. Automātiskās atmiņas piešķiršanas gadījumā dators rūpējas par atmiņas atbrīvošanu, kad jūsu programma ir pabeigusi izpildi. Tomēr, kad mēs no kaudzes piešķiram atmiņu manuāli, mums tā vai citādi ir jāatbrīvo.



Pretējā gadījumā mums galu galā pietrūks atmiņas, un mēs vairs nedarbosim savas programmas. Šeit sāk darboties bibliotēkas stdlib.h bezmaksas () funkcija. Mēs izmantojam šo funkciju programmas beigās tieši pirms atgriešanās paziņojuma, lai kaudzes atmiņa tiktu atgriezta datorsistēmā pirms jūsu programmas pārtraukšanas.



Pieņemsim, ka turpināsit ignorēt šo funkciju, rakstot savus C kodus, kas ir īpaši vērsti uz dinamisko atmiņas piešķiršanu. Tādā gadījumā pienāks brīdis, kad vairs nevarēsit piekļūt savai kaudzei, jo tai beigsies atmiņa. Tāpēc šo šķietami mazāk vērtīgo funkciju nekad nedrīkst aizmirst, kad dinamiski uzņematies atbildību par atmiņas piešķiršanu.





Funkcijas free () vispārējā sintakse C programmēšanas valodā ir šāda:

spēkā neesošsbezmaksas (spēkā neesošs*ptr)

Šeit tukšais atslēgvārds pirms funkcijas free () norāda, ka šīs funkcijas atgriešanas veids nav derīgs. Rādītājs iekavās atbilst atmiņas vietai, kas jāatrod. Nākamajā sadaļā tiks aprakstīti daži piemēri, kuros funkcija free () ir izmantota, lai atbrīvotu C iegūto dinamisko atmiņu.



Bezmaksas funkcijas izmantošanas piemēri C:

Funkciju free () var izmantot ar visām trim stdlib.h bibliotēkas atmiņas piešķiršanas funkcijām, t.i., malloc, calloc un realloc. Šī funkcija ir obligāti jāizmanto pēc tam, kad ir norādīta jūsu programmas pamatfunkcija, lai jūs varētu nodot atpakaļ datorsistēmai programmas izpildes laikā dinamiski piešķirto kaudzes atmiņu. Tagad apskatīsim dažus piemērus, kuros funkcija free () ir izmantota kopā ar malloc un calloc funkcijām C programmēšanas valodā.

1. piemērs: bezmaksas funkcijas izmantošana ar calloc C:

C kods bezmaksas () funkcijas izmantošanai ar funkciju calloc () ir kopīgots attēlā zemāk:

Šī koda galvenais mērķis bija dinamiski piešķirt kādu atmiņu, izmantojot funkciju calloc (). Šim nolūkam mēs esam izmantojuši dinamiskās atmiņas lielumu un šīs dinamiskās atmiņas vērtības kā lietotāja ievadi. Pēc tam mēs plānojām izdrukāt iegūtās vērtības terminālī. Pēc visa šī koda mums ir mūsu bezmaksas () funkcija, kas atbrīvos piešķirto dinamisko atmiņu mūsu C programmas izpildes dēļ.

Tā paša koda nedaudz modificēta versija ir parādīta arī attēlā, kas minēts zemāk:

Šī modificētā versija bija paredzēta tikai mūsu dinamiski piešķirto atmiņas vērtību drukāšanai pirms manuālas inicializācijas. Mēs zinām, ka funkcija calloc () inicializē visu atmiņu ar nullēm, pirms notiek aktualizācija. Tomēr galvenais, kas jāatzīmē šeit, šajā kodā, ir tas, ka, lai gan šis kods bija diezgan kompakts un vienkāršs, mēs joprojām izmantojām funkciju free (), tiklīdz tika sasniegta vēlamā funkcionalitāte, lai atbrīvotu mūsu kaudzes atmiņu. iegūts šīs C programmas izpildes rezultātā.

2. piemērs: bezmaksas funkcijas izmantošana ar malloc C:

C kods bezmaksas () funkcijas izmantošanai ar funkciju malloc () ir kopīgots zemāk pievienotajā attēlā:

Šī koda galvenais mērķis bija dinamiski piešķirt kādu atmiņu, izmantojot funkciju malloc (). Šim nolūkam mēs esam piešķīruši šīs dinamiskās atmiņas vērtības for ciklam. Pēc tam mēs plānojām izdrukāt iegūtās vērtības terminālī, izmantojot citu cilpai. Pēc visa šī koda mums ir bezmaksas () funkcija tieši pirms atgriešanās paziņojuma, kas mūsu programmas C izpildes rezultātā vienkārši atbrīvos piešķirto dinamisko atmiņu.

Secinājums:

Šis raksts uzsvēra, cik svarīgi ir izmantot bezmaksas () funkciju C programmēšanas valodā Linux. Lielākā daļa lietotāju uzskata, ka faila stdlib.h piešķiršanas funkcijas ir svarīgākas; tomēr, izlasot šo rakstu, jūs varat skaidri redzēt, ka funkcija free () ir vienlīdz svarīga. Tas palīdzēs atbrīvot dinamiski iegūto atmiņu un nodrošinās, ka jums nekad nepietrūks atmiņas, kad mēģināsit izpildīt savas programmas nākotnē.