Funkcja malloc() w bibliotece C z PRZYKŁADEM

Co to jest malloc w C?

Funkcja malloc() oznacza alokację pamięci. Jest to funkcja służąca do dynamicznego przydzielania bloku pamięci. Rezerwuje przestrzeń pamięci o określonym rozmiarze i zwraca wskaźnik zerowy wskazujący lokalizację pamięci. Zwracany wskaźnik jest zwykle typu void. Oznacza to, że możemy przypisać funkcję malloc do dowolnego wskaźnika.

Składnia

ptr = (cast_type *) malloc (byte_size);

Tutaj,

  • ptr jest wskaźnikiem typu rzutu.
  • Funkcja malloc zwraca wskaźnik do przydzielonej pamięci o rozmiarze bajtu.
Example: ptr = (int *) malloc (50)

Po pomyślnym wykonaniu tej instrukcji rezerwowana jest pamięć o wielkości 50 bajtów. Adres pierwszego bajtu zarezerwowanej przestrzeni jest przypisany do wskaźnika ptr typu int.

Rozważ inny przykład implementacji malloc:

#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));
    }
}

Wyjście:

Value of the 6th integer is 480

Co to jest malloc w C

  1. Zauważ, że rozmiar(*ptr) użyto zamiast rozmiar(int) aby kod był bardziej odporny w przypadku późniejszej konwersji deklaracji *ptr na inny typ danych.
  2. Alokacja może się nie powieść, jeśli pamięć nie jest wystarczająca. W tym przypadku zwraca wskaźnik NULL. Powinieneś więc dołączyć kod sprawdzający wskaźnik NULL.
  3. Należy pamiętać, że przydzielona pamięć jest ciągła i może być traktowana jako tablica. Możemy użyć arytmetyki wskaźników, aby uzyskać dostęp do elementów tablicy, zamiast używać nawiasów [ ]. Zalecamy używanie + do odwoływania się do elementów tablicy, ponieważ użycie inkrementacji ++ lub += zmienia adres przechowywany przez wskaźnik.

Funkcji Malloc można używać również z typami danych znakowych oraz złożonymi typami danych, takimi jak struktury.