Как выделить память из стека явно? С++
Разбираюсь с тем, как работают аллокаторы. С обычными аллокаторами все понятно, грубо говоря это обертка над оператором new. Но как работают аллокаторы, выделяющие память из стека? Если нужно выделить определенное количество памяти из стека под определенное количество элементов фиксированного размера, то как это делает аллокатор?
Ответы (1 шт):
Это делает компилятор во время компиляции, но если хочется, чтобы было АПАСНА и АДРЕНАЛИН, 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()
Опасность состоит в том, что если просчитаться с размером, получится название данного сайта со всеми вытекающими из этого последствиями.