Я знаю, что поведение _alloca заключается в освобождении памяти из стека, когда вы покидаете функцию. Есть ли способ освободить память раньше?
Нету. Там нет смысла в использовании _alloca
в любом случае — вы можете написать высокоскоростной распределитель памяти пула, который может выделять и освобождать быстрее из кучи и с меньшими ограничениями по размеру.
нет, нет (исключая возмущение со стеком явно, например, в asm
блок) но вы можете использовать _malloca
а также _freea
, если вам нужно что-то подобное.
РЕДАКТИРОВАТЬ: как отмечает BoBTFish: If it was allocated on the stack, _freea does nothing
поэтому этот ответ неверен по отношению к освобождению памяти ранее. Тем не менее, я думаю, что лучше не удалять его, поскольку это указывает на альтернативу _alloca
что несколько безопаснее.