malloc() Funkce v knihovně C s PŘÍKLADEM
Co je malloc v C?
Funkce malloc() znamená alokaci paměti. Je to funkce, která se používá k dynamickému přidělování bloku paměti. Vyhradí paměťový prostor zadané velikosti a vrátí nulový ukazatel ukazující na místo v paměti. Vrácený ukazatel je obvykle typu void. To znamená, že funkci malloc můžeme přiřadit libovolnému ukazateli.
Syntax
ptr = (cast_type *) malloc (byte_size);
Zde,
- ptr je ukazatel cast_type.
- Funkce malloc vrací ukazatel na přidělenou paměť velikosti byte_size.
Example: ptr = (int *) malloc (50)
Po úspěšném provedení tohoto příkazu je rezervován paměťový prostor o velikosti 50 bajtů. Adresa prvního bajtu rezervovaného prostoru je přiřazena ukazateli ptr typu int.
Zvažte další příklad implementace 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)); } }
Výstup:
Value of the 6th integer is 480
- Všimněte si to sizeof(*ptr) byl použit místo sizeof(int) aby byl kód robustnější, když bude deklarace *ptr později přetypována na jiný datový typ.
- Alokace může selhat, pokud paměť není dostatečná. V tomto případě vrátí ukazatel NULL. Měli byste tedy zahrnout kód pro kontrolu ukazatele NULL.
- Mějte na paměti, že přidělená paměť je souvislá a lze s ní zacházet jako s polem. Pro přístup k prvkům pole můžeme použít aritmetiku ukazatele namísto použití závorek [ ]. Doporučujeme používat + k odkazování na prvky pole, protože použití inkrementace ++ nebo += změní adresu uloženou v ukazatel.
Funkci Malloc lze také použít se znakovým datovým typem i se složitými datovými typy, jako jsou struktury.