Čo je malloc v C?
Funkcia malloc () predstavuje alokáciu pamäte. Je to funkcia, ktorá sa používa na dynamické pridelenie bloku pamäte. Vyhradzuje si pamäťový priestor určenej veľkosti a vracia nulový ukazovateľ smerujúci na miesto v pamäti. Vrátený ukazovateľ je zvyčajne typu void. To znamená, že môžeme priradiť funkciu malloc každému ukazovateľu.
Syntax
ptr = (cast_type *) malloc (byte_size);
Tu,
- ptr je ukazovateľ typu cast_type.
- Funkcia malloc vráti ukazovateľ na pridelenú pamäť byte_size.
Example: ptr = (int *) malloc (50)
Po úspešnom vykonaní tohto príkazu je vyhradený pamäťový priestor 50 bajtov. Adresa prvého bajtu vyhradeného priestoru je priradená smerníku ptr typu int.
Zvážte ďalší príklad implementácie 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ýkon:
Value of the 6th integer is 480
- Všimnite si, že namiesto sizeof (int ) sa použil sizeof (* ptr), aby bol kód robustnejší, keď sa deklarácia * ptr neskôr preleje na iný dátový typ.
- Alokácia môže zlyhať, ak pamäť nie je dostatočná. V takom prípade vráti ukazovateľ NULL. Mali by ste teda zahrnúť kód na kontrolu ukazovateľa NULL.
- Pamätajte, že pridelená pamäť je súvislá a dá sa s ňou zaobchádzať ako s poľom. Namiesto prístupu k zátvorkám [] môžeme na prístup k prvkom poľa použiť aritmetiku ukazovateľa. Odporúčame použiť + na označenie prvkov poľa, pretože pomocou prírastku ++ alebo + = sa zmení adresa uložená ukazovateľom.
Funkciu Malloc možno tiež použiť s typom údajových údajov, ako aj so zložitými údajovými typmi, ako sú napríklad štruktúry.