void *alloca(size_t size)
Прототип:
Описание:
Эта функция не определена стандартом ANSI С. Функция alloca() выделяет size байт памяти из стека системы (не из кучи) и возвращает на него указатель. Если запрос на выделение памяти не выполнен, то возвращается нулевой указатель.
Выделенная с использованием alloca() память автоматически освобождается при выходе из функции, которая вызвала alloca(). Это означает, что указатель, возвращенный функцией alloca(), никогда не служит аргументом функции free().
![]() |
ЗАМЕТКА: По техническим причинам, чтобы гарантировать сохранность стека, всякая функция, в которой используется вызов alloca(), должна содержать хотя бы одну локальную переменную, которой присваивается значение. |
Пример:
В следующий программе выделяется 80 байт памяти из стека с использованием alloca(). #include <malloc.h> #include <stdio.h> #include <stdlib.h> int main(void) { int i=10; char *str; if (!(str = (char *) alloca(80))) { printf("Allocation error."); exit(1); } /* ... */ return 0; }

