Dynamická práce s pamětí

Doplňující informace

Přetypování ukazatelů

Přestože jsou ukazatele při deklaraci vztaženy ke konkrétnímu datovému typu, umožňuje jazyk C definovat také ukazatel (ukazatel na typ void), který není vázán ke konkrétnímu typu. S takovým ukazatele pak lze některé operace provádět pouze při uvedení explicitní konverze. V praxi se tyto ukazatele používají převážně při deklaracích a definicích funkcí, které pracují s daty libovolných typů.

Příklad:

void *moje_pamet;
((int *)moje_pamet)++;

Funkce pro práci s pamětí

Všechny níže uvedené funkce jsou definovány v knihovně stdlib.h. Při výpočtu velikosti bloku se v praxi hojně využívá operátor sizeof.

Pokud není možné paměť alokovat, vrací níže uvedené funkce hodnotu NULL (ukazatel na nulovou adresu).

void *malloc(size_t size);

Funkce alokuje paměť velikosti size a vrátí ukazatel na danou oblast paměti.

void *calloc(size_t items, size_t size);

Funkce alokuje paměť pro items prvků o velikosti size (tedy items*size bytů), navíc tuto paměť vyplní nulami.

void *realloc(void* old, size_t size);

Funkce zajišťující změnu velikosti dříve alokovaného bloku paměti old na velikost size. Data původního bloku paměti budou zkopírována do nově alokovaného.

void free(void* block);

Funkce pro uvolnění paměti block. Používá se vždy, když víme, že už danou paměť nebudeme v programu používat.


Creative Commons License Sbírka úloh z jazyka C. © Katedra informatiky Univerzity Palackého v Olomouci, 2009.
Projekt byl vytvořen za podpory grantu FRVŠ 2061/2009/G1.