Vad är malloc i C?
Malloc () -funktionen står för minnesallokering. Det är en funktion som används för att allokera ett minnesblock dynamiskt. Den reserverar minnesutrymme av angiven storlek och returnerar nollpekaren som pekar till minnesplatsen. Pekaren som returneras är vanligtvis ogiltig. Det betyder att vi kan tilldela malloc-funktion till valfri pekare.
Syntax
ptr = (cast_type *) malloc (byte_size);
Här,
- ptr är en pekare av cast_type.
- Malloc-funktionen returnerar en pekare till det tilldelade minnet av byte_size.
Example: ptr = (int *) malloc (50)
När detta uttalande har utförts reserveras ett minnesutrymme på 50 byte. Adressen till den första byten med reserverat utrymme tilldelas pekaren ptr av typen int.
Tänk på ett annat exempel på malloc-implementering:
#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
- Lägg märke till att sizeof (* ptr) användes istället för sizeof (int) för att göra koden mer robust när * ptr-deklarationen skrivs ut till en annan datatyp senare.
- Tilldelningen kan misslyckas om minnet inte är tillräckligt. I det här fallet returnerar den en NULL-pekare. Så du bör inkludera kod för att söka efter en NULL-pekare.
- Tänk på att det tilldelade minnet är sammanhängande och att det kan behandlas som en matris. Vi kan använda pekarens aritmetik för att komma åt arrayelementen istället för att använda parenteser []. Vi rekommenderar att du använder + för att hänvisa till arrayelement eftersom användning av inkrementering ++ eller + = ändrar adressen som lagras av pekaren.
Malloc-funktionen kan också användas med teckendatatypen liksom komplexa datatyper som strukturer.