Для виділення й звільнення динамічної пам'яті використаються функції
Функція | Прототип і короткий опис |
malloc | void * malloc(unsigned s) Повертає покажчик на початок області динамічної пам'яті довжиною в s байт, при невдалому завершенні повертає NULL |
calloc | void * calloc(unsigned n, unsigned m) Повертає покажчик на початок області динамічної пам'яті для розміщення n елементів довжиною по m байт кожний, при невдалому завершенні повертає NULL |
realloc | void * realloc(void * p, unsigned s) Змінює розмір блоку раніше виділеної динамічної пам'яті до розміру s байт, р- адреса початку змінюваного блоку, при невдалому завершенні повертає NULL |
free | void *free(void p) Звільняє раніше виділену ділянку динамічної пам'яті, р - адреса першого байта |
Приклад:
Функція для формування одномірного динамічного масиву
int * make_mas(int n)
(
int *mas;
mas=(int*)malloc(n*sizeof(int));
for(int i=0;i<n;i++)
mas[i]=random(10);
return mas;
}
Для виділення пам'яті використається функція malloc, параметром якої є розмір виділюваної ділянки пам'яті рівний n*sizeof(int). Тому що функція malloc повертає нетипізований покажчик void*, те необхідно виконати перетворення отриманого нетипізованого покажчика в покажчик int*.
Звільнити виділену пам'ять можна функцією free(mas).