I C -programmering, når vi kjører et program, okkuperer det noe minne på systemet. Hvis vi bruker det statiske minnet, må vi tilordne en fast minneblokk fra systemet, og etter utførelsen av programmet kan to scenarier skje; Programmet vil enten trenge en større blokkstørrelse enn størrelsen erklært, eller det vil trenge den mindre størrelsesblokken av minne. Hvis minneblokken blir mindre for det utførte programmet, vil resultatene ikke være presise, og hvis blokkstørrelsen er større for det utførte programmet, er det gjenværende gratis minnet til blokken ikke nytte.
For å unngå dette, foretrekkes det å bruke dynamisk minne i C -programmering som har forskjellige typer funksjoner.
Hva er en malloc () -funksjon i C -programmering
I C -programmering, hvis vi bruker statisk minne, kan vi ikke endre minnestørrelsen under utførelsen av programmet. Det er en anbefalt praksis å bruke dynamisk minne i C -programmering, slik at minnestørrelse kan endres under utførelsen av programmet.
For bruk av dynamisk minne, må vi ta med en overskriftsfil “Stdlib.h ”, som inkluderer alle funksjonene til dynamisk minne. Malloc () er også medlem av stdlib.H bibliotek og brukes til å tilordne minne til det utførte programmet. Når en malloc () -funksjon kalles i et program, sender den en forespørsel til systemets haug, som enten tildeler den forespurte minneblokken til Malloc () -funksjonen eller vil returnere en nullverdi hvis det ikke er tilstrekkelig plass på den haug.
Malloc () ber om minneblokken i henhold til behovet til det utførte programmet, og når programmet blir utført med hell, kan vi returnere minneblokken tilbake til haugen ved å bruke gratis () -funksjonen, slik at den kan brukes til utførelsen av andre instruksjoner.
Den generelle syntaks for Malloc () -funksjonen er:
PTR_NAME = (Cast-type*) Malloc (størrelse);Forklaringen på syntaks ovenfor er enkel:
For en bedre forståelse vil vi vurdere et eksempel, lage en fil med navnet på mal_txt.c og skriv inn følgende skript:
#inkludereÅ kompilere mal_txt.C -fil, vi bruker GCC -kompilatoren:
$ GCC MAL_TXT.c -o mal_txtNår filen er satt sammen med suksess uten feil, utfører du koden ved hjelp av kommandoen:
$ ./mal_txtI koden ovenfor oppretter vi matrisen og skriver ut summen av elementene i matrisen. En detaljert forklaring av programmet ovenfor er:
Hva er en realloc () -funksjon i C -programmeringen
En annen funksjon av dynamisk minne er realloc () -funksjonen, den brukes til å endre minneblokken som er tilordnet Malloc () -funksjonen. Malloc () -funksjonen som omtalt ovenfor ber om en minneblokk fra haugen, men for å endre størrelsen på minneblokken slik at vi brukte RealLoc () -funksjonen i stedet for å slette hele minneblokken og innhente den nye minneblokken manuelt.
RealLoc () -funksjonen er den korte formen for "omfordeling av minnet", og den brukes til å endre størrelse på minneblokkstørrelsen tildelt av Heap to Malloc () eller Calloc () -funksjonen. Det forstyrrer ikke det opprinnelige innholdet i minneblokken og ber om den nye minneblokken fra haugen og kopierer alle dataene fra den gamle minneblokken til den nye minneblokken uten å forstyrre innholdet i den.
Den generelle syntaksen ved å bruke realloc () -funksjonen er:
$ PTR = realloc (PTR, nals);Forklaringen på syntaks ovenfor er:
Igjen oppretter vi en fil, real_file.c, og skriv koden i den for en bedre forståelse av bruken av realloc () -funksjon:
#inkludereNå kompiler real_filen.c Bruke GCC -kompilatoren:
$ gcc real_file.c -o real_fileHvis filen er samlet, kjører du programmet ved å bruke kommandoen:
$ ./real_fileForklaringen på skriptet ovenfor er:
Konklusjon
I C -programmering er dynamisk minnetildeling manuell tildeling av minne i henhold til programkravet. Malloc () og realloc () -funksjonene er en del av dynamisk minne; Malloc () brukes til minnetildeling og realloc () brukes til omfordeling av minnet. I denne oppskrivningen har vi forklart begge; Malloc () og realloc () -funksjoner, hvordan de fungerer, og hva er den generelle syntaksen ved å bruke dem begge. Til slutt, for en bedre forståelse, utførte vi eksemplene på begge funksjonene.