Minnetildeling i C:
Ressursene er stadig mangelvare. Til enhver tid har vi jobbet for å forbedre ressursens bruk. Dette har vært grunnlaget for vår utvikling. Minnetildeling er en forestilling som er relatert til dette målet. Slik at faktiske variabler kan opprettes, må hukommelsen tilordnes variablene som vi konstruerer. Det er nå et skille mellom hvordan vi tror ting skjer og hvordan de skjer. Når vi tenker på å lage alt, tenker vi på å starte fra begynnelsen; Likevel, når en datamaskin lager en variabel 'x', er det mer som distribusjon; Systemet plukker bare en minnecelle for X fra et bredt basseng med tilgjengelige minneceller. Det er som et hotellrom som blir tildelt noens navn fra mange gratis eller ledige eksisterende rom. Dette eksemplet avklarte mest sannsynlig hvordan datamaskinen administrerer minnetildeling.
Nå kommer du til hvilke typer minnetildeling som er tillatt i C -programmeringsspråket er statisk minnetildeling og dynamisk minnetildeling. Når vi definerer variabler, setter vi alle variablene som skal brukes slik at kompilatoren forstår hva vi gjør fordi variabelen som brukes er en viktig del av programmet som brukeren ønsker, ikke et rouge -symbol som flyter gjennom.
Eksempel i det virkelige liv
Når vi erklærer variabler, tildeler kompilatoren dem til ledige minneplasser som om de var på et hotell med eksisterende tomme rom som vil bli tildelt forskjellige navn på gjesten. Som du kan se, gjøres dette før programmet kjører; Du kan ikke bruke denne tilnærmingen til å tildele variabler mens programmet kjører. Det er her den dynamiske minnetildelingen spiller inn.
Programmeringseksempel
Ta en matrise som et eksempel ettersom størrelsen er erklært før, og du kan ikke justere størrelsen på en matrise når den er erklært. Det er mulig at matrisen du spesifiserte ikke er stort nok. Du kan tildele minne manuelt under kjøretid for å avhjelpe dette problemet. Dette kalles dynamisk minnetildeling. Det er flere bibliotekfunksjoner på programmet C -programmering som hjelper oss å tildele minnet dynamisk, som er definert i "" overskriftsfilen; Funksjonene er som følger:
Syntaks for malloc -funksjonen
Malloc er forkortelsen av minnetildeling. En minneblokk med det spesifiserte antallet byte er reservert i Malloc () -funksjonen. Den returnerer også en tomrom som kan bli omgjort til noen form for peker. Syntaksen for Malloc -funksjonen i C -programmering er skrevet nedenfor:
#P = (CastType*) Malloc (størrelse);Hvis vi skulle skrive et uttrykk for å tildele minne for en heltallvariabel, ville det se slik ut,
p = (int *) malloc (100 * sizeof (int));Kodestykket skrevet ovenfor setter 400 byte av minneplass. Årsaken til dette er at heltalldatatypen har en størrelse på 4 byte. Pekeren “P” holder rede på startbyte av det tildelte minnet.
Syntaks for Calloc () -funksjon
Sammenhengende tildeling er forkortelsen av begrepet “Calloc.”I C -programmering, brukes deretter calloc () -funksjonen til å tildele en viss minne og deretter tilbakestille den til null. Denne minneadressen blir returnert som en tomromspeker, som deretter kan konverteres til den nødvendige typen. Funksjonen godtar to argumenter som bestemmer mengden minne som skal tildeles som en helhet. Syntaks for Calloc () -funksjonen i C -programmering er skrevet nedenfor:
P = (CastType*) Calloc (n, størrelse);Nå vil vi se på RealLoc -funksjonen i C -programmering.
Realloc () -funksjonen i C:
RealLoc står for omfordeling. Realloc () -metoden kan brukes til å endre størrelsen på tidligere tildelt minne hvis det dynamisk tildelte minnet er utilstrekkelig eller mer enn nødvendig. Realloc () -funksjonen returnerer en peker til et nytt objekt med størrelsen levert av størrelse og behandler det gamle objektet referert til av PTR. Opp til de mindre av de to størrelsene, er elementene i det nye objektet likt de fra det forrige objektet før deallocation. Eventuelle byte i det nye objektet som er større enn det gamle objektets størrelse har udefinerte verdier. Realloc () skal bare brukes til dynamisk tildelt minne; Det er verdt å merke seg. Oppførselen er ukjent hvis minneområdet ikke blir tildelt dynamisk.
Syntaks for realloc () -funksjonen
Syntaks for realloc () -funksjonen i C -programmering er skrevet nedenfor:
# realloc (PTR, ny størrelse);I uttrykket ovenfor er Realloc en funksjon som endrer størrelsen på minnested. Tittelen på pekervariabelen som må endres er “PTR”. "Ny størrelse" refererer til minneområdets nye størrelse. Det har potensialet til å være mindre eller større enn nåværende størrelse.
Selv om alle disse funksjonene har tildelt minneplassen, er de ikke gratis ennå, og vi må frigjøre dem eksplisitt. Det er her Free () -funksjonen er nødvendig for å frigjøre det tildelte rommet i minnet. Syntaks for gratis () -funksjonen er skrevet nedenfor:
#Free (PTR);“PTR” er pekernavnet hvis minneplass vil bli frigjort.
Nå vil vi se på å utføre realloc () -funksjonen i Ubuntu 20.04 Miljø.
Implementering av realloc () -funksjon i Ubuntu 20.04:
Som vi vet om grunnlaget for realloc () -funksjonen, kan vi nå implementere denne funksjonen i Ubuntu 20.04 Miljø. For å gjøre koden vår, lanser du terminalen fra Ubuntu Desktop og skriver “CD Desktop” for å komme til Desktop Directory, med denne kommandoen “Touch”, kan du lage en .C -fil med navn og utvidelse av .c. Gå deretter til skrivebordet ditt og finn og åpne din .C -fil. Nå oppretter vi litt kode i den filen for å bruke RealLoc () -metoden for å omfordele minnet.
Til å begynne med har vi lagt til de to viktigste bibliotekene i C -språket. Etter det startet vi hovedprogrammet vårt. Vi har erklært en pekervariabel og gjort verdien lik "null". At vi har brukt realloc () -metoden og lagt to parametere til den. "Hvis" -uttalelsen blir lagt til for å sjekke tilstanden. Hvis den uttalte tilstanden er fin, vil kompilatoren utføre printf -setningen.
Etter å ha trykket på lagringsknappen, lukker du filen. Gå tilbake til terminalen og skriv “G ++” etterfulgt av filnavnet ditt og “.C ”utvidelse for å produsere utdatafilen. Du kan nå utføre den filen ved å skrive "./”Etterfulgt av din“.ut ”utvidelse for å motta ønsket utgang.
Som du kan se, omfordelte vi effektivt minneområdet til pekeren ved hjelp av RealLoc () -metoden, og vi har nå et bedre grep om hvordan denne funksjonen fungerer i en C -applikasjon på grunn av dette eksemplet.
Konklusjon:
I denne opplæringen studerte vi begrepet minnetildeling og dets forskjellige typer. Hensikten med denne artikkelen var å lære om minnetildelingsmetodeens fordeler og ulemper og hvor du skal bruke dem. De forskjellige funksjonene i den dynamiske minnetildelingsmetoden ble også diskutert i alvorlig detalj i denne artikkelen. Til slutt implementerte vi også RealLOC () -funksjonen i C -programmeringsspråket i Ubuntu 20.04 Miljø for å forstå dette konseptet bedre.