Vapaa muisti C -muodossa ja ilmainen toiminto

Free Memory C With Free Function

C -kieli on riittävän tehokas käsittelemään muistinhallintaa. Se tarkoittaa, että aina kun ilmoitat minkä tahansa tietotyypin säännöllisen muuttujan C: ssä, ohjelmointikieli itse on vastuussa tämän muistin jakamisesta tai vapauttamisesta, kun ohjelma on suoritettu onnistuneesti. Kuitenkin dynaamisen muistinvarauksen tapauksessa, koska varaat muistin manuaalisesti, sinun on myös vapautettava se itse.

Stdlib.h -kirjastossa on oma toiminto tätä tarkoitusta varten, eli free () -toiminto. Tänään tutkimme tarvetta käyttää tätä toimintoa C -ohjelmointikielellä. Tämän jälkeen tarkastelemme muutamia esimerkkejä, joissa tätä toimintoa on käytetty muistin vapauttamiseen manuaalisesti C -ohjelmointikielellä Linuxissa.



Tarve käyttää C -toiminnon vapaata toimintoa järjestelmän muistin vapauttamiseksi:

Me kaikki tiedämme, että tietokonejärjestelmissämme on rajallinen muisti, minkä vuoksi emme voi koskaan ajaa siinä äärettömiä ohjelmia. Automaattisen muistinvarauksen tapauksessa tietokone huolehtii muistin vapauttamisesta, kun ohjelma on suorittanut ohjelman. Kuitenkin, kun varaamme muistin manuaalisesti kasasta, meidän on vapautettava se tavalla tai toisella.



Muussa tapauksessa lopulta muisti loppuu, emmekä käytä ohjelmiamme pidemmälle. Tässä tulee käyttöön stdlib.h -kirjaston vapaa () -toiminto. Käytämme tätä toimintoa ohjelman lopussa juuri ennen palautusilmoitusta, jotta kasamuisti palautetaan tietokonejärjestelmään ennen ohjelman päättymistä.



Oletetaan, että jätät tämän toiminnon huomiotta kirjoittaessasi C -koodejasi, jotka on erityisesti suunnattu dynaamiseen muistinvaraukseen. Siinä tapauksessa tulee kohta, jolloin et voi enää käyttää kasaasi, koska muisti loppuu. Siksi tätä näennäisesti vähemmän arvokasta toimintoa ei saa koskaan unohtaa, kun otat vastuun muistin jakamisesta dynaamisesti.

Free () -toiminnon yleinen syntaksi C -ohjelmointikielellä on seuraava:

mitätönvapaa (mitätön*ptr)

Tässä tyhjä avainsana ennen ilmaista () -funktiota ilmoittaa, että tämän funktion palautustyyppi on mitätön. Suluissa oleva osoitin vastaa muistipaikkaa, joka on siirrettävä. Seuraavassa osassa kuvataan esimerkkejä, joissa free () -toimintoa on käytetty C: ssä hankitun dynaamisen muistin vapauttamiseen.



Esimerkkejä ilmaisen toiminnon käyttämisestä C: ssä:

Vapaa () -toimintoa voidaan käyttää stdlib.h -kirjaston kaikkien kolmen muistinvaraustoiminnon kanssa, ts. Malloc, calloc ja realloc. Tämän toiminnon käyttäminen on pakollista ohjelman perustoimintojen ilmoittamisen jälkeen, jotta voit palauttaa ohjelman suorituksen aikana dynaamisesti varaamasi kasamuistin takaisin tietokonejärjestelmääsi. Katsotaanpa nyt muutamia esimerkkejä, joissa ilmaista () -funktiota on käytetty malloc- ja calloc -funktioiden kanssa C -ohjelmointikielellä.

Esimerkki # 1: Vapaan toiminnon käyttäminen callocin kanssa C: ssä:

C -koodi ilmaisen () -toiminnon käyttämiseksi calloc () -toiminnon kanssa on jaettu alla olevassa kuvassa:

Tämän koodin perustarkoitus oli antaa muistia dynaamisesti calloc () -funktion avulla. Tätä varten olemme ottaneet dynaamisen muistin koon ja tämän dynaamisen muistin arvot käyttäjän syötteeksi. Sitten halusimme tulostaa hankitut arvot päätelaitteelle. Koko tämän koodin jälkeen meillä on ilmainen () -toiminto, joka vapauttaa varatun dynaamisen muistin C -ohjelmamme suorittamisen vuoksi.

Hieman muokattu versio samasta koodista näkyy myös alla mainitussa kuvassa:

Tämä muutettu versio on tarkoitettu vain tulostamaan dynaamisesti varatut muistiarvomme ennen sen manuaalista alustamista. Tiedämme, että calloc () -funktio alustaa koko muistin nollilla ennen toteutumista. Tärkein huomionarvoinen asia tässä koodissa on kuitenkin se, että vaikka tämä koodi oli melko kompakti ja yksinkertainen, käytimme silti ilmaista () -funktiota, kun haluttu toiminto oli saavutettu vain vapauttaaksemme kasan muistin hankittu tämän C -ohjelman suorittamisen seurauksena.

Esimerkki 2: Vapaan toiminnon käyttäminen mallocin kanssa C: ssä:

C -koodi ilmaisen () -toiminnon käyttämiseen malloc () -toiminnon kanssa on jaettu alla olevassa kuvassa:

Tämän koodin perustarkoitus oli antaa muistia dynaamisesti malloc () -funktion avulla. Tätä varten olemme määrittäneet tämän dynaamisen muistin arvot for -silmukalle. Sitten halusimme tulostaa hankitut arvot päätteelle toisen silmukan avulla. Koko tämän koodin jälkeen meillä on ilmainen () -funktiomme juuri ennen palautuslauseketta, joka yksinkertaisesti vapauttaa varatun dynaamisen muistin C -ohjelmamme suorittamisen seurauksena.

Johtopäätös:

Tässä artikkelissa korostettiin free () -toiminnon käytön tärkeyttä C -ohjelmointikielellä Linuxissa. Useimmat käyttäjät uskovat, että stdlib.h -tiedoston varaustoiminnot ovat tärkeämpiä. tämän artikkelin läpi näet kuitenkin selvästi, että vapaa () -toiminto on yhtä tärkeä. Se auttaa vapauttamaan dynaamisesti hankitun muistin ja varmistaa, että muisti ei lopu koskaan, kun yrität suorittaa ohjelmia tulevaisuudessa.