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
- 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.
- 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.
- 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.