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

Co je malloc v C

  1. 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.
  2. 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.
  3. 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.