Как выделить память из стека явно? С++

Разбираюсь с тем, как работают аллокаторы. С обычными аллокаторами все понятно, грубо говоря это обертка над оператором new. Но как работают аллокаторы, выделяющие память из стека? Если нужно выделить определенное количество памяти из стека под определенное количество элементов фиксированного размера, то как это делает аллокатор?


Ответы (1 шт):

Автор решения: gbg

Это делает компилятор во время компиляции, но если хочется, чтобы было АПАСНА и АДРЕНАЛИН, alloca() к вашим услугам:

   #include <alloca.h>

   void *alloca(size_t size);

DESCRIPTION

   The alloca() function allocates size bytes of space in the stack
   frame of the caller.  This temporary space is automatically freed
   when the function that called alloca() returns to its caller.

Функция выделяет size штук байт из стека того кто ее вызвал. Память будет освобождена автоматически, когда произойдет возврат из функции, вызвавшей alloca()

Опасность состоит в том, что если просчитаться с размером, получится название данного сайта со всеми вытекающими из этого последствиями.

→ Ссылка