Hvad er malloc i C?
Funktionen malloc () står for hukommelsestildeling. Det er en funktion, der bruges til at allokere en hukommelsesblok dynamisk. Den reserverer hukommelsesplads med den angivne størrelse og returnerer nulmarkøren, der peger på hukommelsesplaceringen. Den returnerede markør er normalt ugyldig. Det betyder, at vi kan tildele malloc-funktion til enhver markør.
Syntaks
ptr = (cast_type *) malloc (byte_size);
Her,
- ptr er en markør af cast_type.
- Malloc-funktionen returnerer en markør til den tildelte hukommelse for byte_size.
Example: ptr = (int *) malloc (50)
Når denne erklæring er eksekveret, reserveres et hukommelsesrum på 50 byte. Adressen til den første byte af reserveret plads tildeles markøren ptr af typen int.
Overvej et andet eksempel på implementering af malloc:
#includeint main(){int *ptr;ptr = malloc(15 * sizeof(*ptr)); /* a block of 15 integers */if (ptr != NULL) {*(ptr + 5) = 480; /* assign 480 to sixth integer */printf("Value of the 6th integer is %d",*(ptr + 5));}}
Produktion:
Value of the 6th integer is 480
- Bemærk, at sizeof (* ptr) blev brugt i stedet for sizeof (int) for at gøre koden mere robust, når * ptr-erklæringen senere udskrives til en anden datatype.
- Tildelingen kan mislykkes, hvis hukommelsen ikke er tilstrækkelig. I dette tilfælde returnerer den en NULL-markør. Så du skal medtage kode for at kontrollere, om der er en NULL-markør.
- Husk, at den tildelte hukommelse er sammenhængende, og at den kan behandles som en matrix. Vi kan bruge pegearitmetik til at få adgang til arrayelementerne i stedet for at bruge parenteser []. Vi anbefaler at bruge + til at henvise til matrixelementer, fordi brug af inkrementering ++ eller + = ændrer adressen gemt af markøren.
Malloc-funktionen kan også bruges med karakterdatatypen såvel som komplekse datatyper såsom strukturer.