Voľná ​​pamäť v C s voľnou funkciou

Free Memory C With Free Function



Jazyk C je dostatočne účinný na to, aby zvládol správu pamäte. Znamená to, že vždy, keď v C deklarujete regulárnu premennú akéhokoľvek dátového typu, je samotný programovací jazyk zodpovedný za uvoľnenie alebo uvoľnenie tejto pamäte po úspešnom spustení vášho programu. V prípade dynamického prideľovania pamäte, pretože pamäť prideľujete ručne, preto ju musíte tiež uvoľniť sami.

V knižnici stdlib.h je na tento účel vyhradená funkcia, tj. Funkcia free (). Dnes preskúmame potrebu používať túto funkciu v programovacom jazyku C. Potom sa pozrieme na niekoľko príkladov, v ktorých bola táto funkcia použitá na manuálne uvoľnenie pamäte v programovacom jazyku C v systéme Linux.







Potreba použitia bezplatnej funkcie v jazyku C na uvoľnenie pamäte systému:

Všetci vieme, že naše počítačové systémy majú obmedzenú pamäť, a preto v nej nemôžeme nikdy spustiť nekonečné množstvo programov. V prípade automatického prideľovania pamäte sa počítač postará o uvoľnenie pamäte, keď váš program dokončí svoje spustenie. Keď však alokujeme pamäť ručne z haldy, musíme ju tak či onak uvoľniť.



V opačnom prípade nám časom dôjde pamäť a nebudeme ďalej spúšťať naše programy. Tu vstupuje do hry funkcia free () knižnice stdlib.h. Túto funkciu používame na konci programu bezprostredne pred príkazom return, aby sa pamäť haldy vrátila do počítačového systému pred ukončením vášho programu.



Predpokladajme, že budete túto funkciu ignorovať pri písaní svojich kódov C, ktoré sú zamerané predovšetkým na dynamické prideľovanie pamäte. V takom prípade príde bod, keď už nebudete mať prístup k svojej hromade, pretože dôjde k nedostatku pamäte. Preto nikdy nesmiete zabudnúť na túto zdanlivo menej hodnotnú funkciu, kedykoľvek dynamicky preberáte zodpovednosť za alokáciu pamäte.





Všeobecná syntax funkcie free () v programovacom jazyku C je nasledovná:

prázdnyzadarmo (prázdny*ptr)

Tu kľúčové slovo void pred funkciou free () uvádza, že návratový typ tejto funkcie je neplatný. Ukazovateľ v zátvorkách zodpovedá miestu v pamäti, ktoré je potrebné uvoľniť. Nasledujúca časť popíše niekoľko príkladov, v ktorých bola funkcia free () použitá na uvoľnenie dynamickej pamäte získanej v jazyku C.



Príklady použitia bezplatnej funkcie v jazyku C:

Funkciu free () je možné použiť so všetkými tromi funkciami alokácie pamäte knižnice stdlib.h, tj. Malloc, calloc a realloc. Po zadaní základných funkcií vášho programu je povinné túto funkciu používať, aby ste haldu pamäte, ktorú ste dynamicky pridelili počas vykonávania programu, mohli odovzdať späť do svojho počítačového systému. Teraz sa pozrime na niekoľko príkladov, v ktorých bola funkcia free () použitá s funkciami malloc a calloc v programovacom jazyku C.

Príklad č. 1: Použitie bezplatnej funkcie s calloc v C:

Kód C na používanie funkcie free () s funkciou calloc () bol zdieľaný na obrázku nižšie:

Základným účelom tohto kódu bolo dynamické priradenie určitej pamäte pomocou funkcie calloc (). Za týmto účelom sme vzali veľkosť dynamickej pamäte a hodnoty tejto dynamickej pamäte ako vstup od používateľa. Potom sme zamýšľali vytlačiť získané hodnoty na terminál. Po celom tomto kóde máme svoju funkciu free (), ktorá uvoľní pridelenú dynamickú pamäť kvôli spusteniu nášho programu C.

Mierne upravená verzia toho istého kódu je tiež zobrazená na obrázku nižšie:

Táto upravená verzia mala v úmysle vytlačiť iba naše dynamicky pridelené hodnoty pamäte pred jej manuálnou inicializáciou. Vieme, že funkcia calloc () inicializuje celú pamäť nulami, než dôjde k aktualizácii. Hlavný bod, ktorý je potrebné v tomto kóde poznamenať, je však ten, že aj keď bol tento kód dosť kompaktný a jednoduchý, stále sme používali funkciu free (), akonáhle sa dosiahla požadovaná funkcia, len aby sme uvoľnili haldu pamäte, ktorú sme mali. získané v dôsledku vykonávania tohto programu C.

Príklad č. 2: Použitie bezplatnej funkcie s mallocom v jazyku C:

Kód C na používanie funkcie free () s funkciou malloc () bol zdieľaný na obrázku nižšie:

Základným účelom tohto kódu bolo dynamické priradenie určitej pamäte pomocou funkcie malloc (). Za týmto účelom sme priradili hodnoty tejto dynamickej pamäte v slučke for. Potom sme zamýšľali vytlačiť získané hodnoty na terminál pomocou ďalšej slučky for. Po celom tomto kóde máme funkciu free () tesne pred príkazom return, ktorá jednoducho uvoľní alokovanú dynamickú pamäť v dôsledku vykonania nášho programu C.

Záver:

Tento článok zdôraznil dôležitosť používania funkcie free () v programovacom jazyku C v systéme Linux. Väčšina používateľov sa domnieva, že alokačné funkcie súboru stdlib.h sú dôležitejšie; týmto článkom však môžete jasne vidieť, že funkcia free () je rovnako dôležitá. Pomôže vám uvoľniť dynamicky získanú pamäť a zaistí, že vám nikdy nedôjde pamäť, kedykoľvek sa v budúcnosti pokúsite spustiť svoje programy.