Što je malloc u C?
Funkcija malloc () označava dodjelu memorije. To je funkcija koja se koristi za dinamičko dodjeljivanje bloka memorije. Rezervira memorijski prostor određene veličine i vraća null pokazivač koji pokazuje na memorijsko mjesto. Vraćeni pokazivač obično je tipa void. To znači da bilo kojem pokazivaču možemo dodijeliti funkciju malloc.
Sintaksa
ptr = (cast_type *) malloc (byte_size);
Ovdje,
- ptr je pokazivač na cast_type.
- Funkcija malloc vraća pokazivač na dodijeljenu memoriju byte_size.
Example: ptr = (int *) malloc (50)
Kada se ovaj izraz uspješno izvrši, rezerviran je memorijski prostor od 50 bajtova. Adresa prvog bajta rezerviranog prostora dodjeljuje se pokazivaču ptr tipa int.
Razmotrimo još jedan primjer implementacije malloca:
#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));}}
Izlaz:
Value of the 6th integer is 480
- Primijetite da je sizeof (* ptr) korišten umjesto sizeof (int) kako bi se kôd učinio robusnijim kad se * ptr deklaracija kasnije unese u drugu vrstu podataka.
- Dodjela može propasti ako memorija nije dovoljna. U ovom slučaju, vraća NULL pokazivač. Dakle, trebali biste uključiti kod za provjeru NULL pokazivača.
- Imajte na umu da je dodijeljena memorija susjedna i može se tretirati kao niz. Za pristup elementima niza možemo koristiti aritmetiku pokazivača umjesto da koristimo zagrade []. Savjetujemo da koristite + za pozivanje na elemente niza jer upotreba povećanja ++ ili + = mijenja adresu pohranjenu pokazivačem.
Malloc funkcija također se može koristiti s tipom podataka o znakovima, kao i složenim vrstama podataka kao što su strukture.