Co je malloc v C?
Funkce malloc () znamená alokaci paměti. Jedná se o funkci, která se používá k dynamickému přidělení bloku paměti. Vyhrazuje si paměťový prostor zadané velikosti a vrací nulový ukazatel ukazující na paměťové místo. Vrácený ukazatel je obvykle typu void. To znamená, že můžeme funkci malloc přiřadit libovolnému ukazateli.
Syntax
ptr = (cast_type *) malloc (byte_size);
Tady,
- ptr je ukazatel cast_type.
- Funkce malloc vrací ukazatel na alokovanou paměť byte_size.
Example: ptr = (int *) malloc (50)
Když je tento příkaz úspěšně proveden, je rezervován paměťový prostor 50 bajtů. Adresa prvního bajtu vyhrazeného prostoru je přiřazena ukazateli ptr typu int.
Zvažte další příklad implementace malloc:
#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));}}
Výstup:
Value of the 6th integer is 480
- Všimněte si, že místo sizeof (int ) byl použit sizeof (* ptr), aby byl kód robustnější, když se * ptr deklarace později vysílá 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 ji považovat za pole. Můžeme použít aritmetiku ukazatele pro přístup k prvkům pole spíše než pomocí závorek []. Doporučujeme použít + k označení prvků pole, protože pomocí přírůstku ++ nebo + = se změní adresa uložená ukazatelem.
Funkci Malloc lze také použít se znakovým datovým typem i se složitými datovými typy, jako jsou struktury.