K alokaci paměti slouží v jazyce C příkaz malloc
. Má jeden parametr - velikost paměti - a vrací pointer na začátek přidělené paměti nebo NULL, pokud se nepodařilo paměť přidělit. Přidělený pointer ukazuje na hodnotu typu void
. Proto je třeba jej přetypovat na správnou hodnotu. Dynamické pole a pointer se alokují stejně, u pole se akorát musí velikost položky vynásobit počtem položek. Paměť se uvolňuje příkazem free
, který má jako parametr pointer na paměť, kterou chcenme uvolnit. Tento pointer má ukazovat na void
, proto je nutné proměnnou přetypovat. Po uvolnění paměti však obsah proměnné zůstává zachován (proměnná ovšem již ukazuje do nepřidělené paměti), proto je vhodné její hodnotu změnit na NULL
.
#include <stdio.h> int main(void) { int *p, *pole, i; p = (int*) malloc(sizeof(int)); pole = (int*) malloc(sizeof(int)*10); *p = 5; for(i=0; i<10; i++) *(pole+i) = (i*2)%5; for(i=9; i>=0; i--) printf("%d, ", *(pole+i)); printf("\np = %d\n", *p); free ((void*) pole); free ((void*) p); pole=NULL; p=NULL; return 0; }Zpět