malloc() Funktion i C-bibliotek med EKSEMPEL

Hvad er malloc i C?

Malloc()-funktionen står for hukommelsesallokering. Det er en funktion, som bruges til at allokere en hukommelsesblok dynamisk. Den reserverer hukommelsesplads af specificeret størrelse og returnerer nul-markøren, der peger på hukommelsesplaceringen. Den returnerede markør er normalt af typen void. Det betyder, at vi kan tildele malloc-funktion til enhver pointer.

Syntaks

ptr = (cast_type *) malloc (byte_size);

Her,

  • ptr er en pointer af cast_type.
  • Malloc-funktionen returnerer en pointer til den tildelte hukommelse af byte_size.
Example: ptr = (int *) malloc (50)

Når denne sætning er udført, er der reserveret en hukommelsesplads på 50 bytes. Adressen på den første byte af reserveret plads er tildelt til pointeren ptr af typen int.

Overvej et andet eksempel på malloc-implementering:

#include <stdlib.h>
int 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));
    }
}

Output:

Value of the 6th integer is 480

Hvad er malloc i C

  1. Læg mærke til det sizeof(*ptr) blev brugt i stedet for størrelse på (int) for at gøre koden mere robust, når *ptr-deklarationen typecastes til en anden datatype senere.
  2. Tildelingen kan mislykkes, hvis hukommelsen ikke er tilstrækkelig. I dette tilfælde returnerer den en NULL-markør. Så du bør inkludere kode for at tjekke for en NULL-pointer.
  3. Husk, at den allokerede hukommelse er sammenhængende, og den kan behandles som en matrix. Vi kan bruge pointer-aritmetik til at få adgang til array-elementerne i stedet for at bruge parenteser [ ]. Vi anbefaler at bruge + til at henvise til array-elementer, fordi brug af inkrementering ++ eller += ændrer adressen gemt af pointer.

Malloc-funktionen kan også bruges med karakterdatatypen såvel som komplekse datatyper såsom strukturer.