I've been #programming in the #CLanguage since 1989. #TIL you CAN return memory obtained by alloca() without terminating the function. Just give it a size that is two's complement negative: alloca(-40) to give back 40 bytes. That becomes SIZE_MAX - 40, whose wraparound arithmetic will move the stack pointer in the direction toward the stack bottom.
Usual disclaimers apply: it's nonstandard and compiler/platform dependent. Maybe some allocas guard against that and blow up.