alloca 如何从栈中分配内存?
How do functions like alloca allocate memory from the stack?

之前我聊过编译器如何确保大型栈分配不会跳过保护页,Shawn Van Ness 好奇 _alloca 是否也会进行必要的 _chkstk 探测。答案是肯定的:_alloca 函数在调整栈指针分配内存前,同样会调用 _chkstk 进行探测。通过 x86-64 的汇编示例可以看到,无论是创建局部帧还是执行 alloca,都会复用同一个 __chkstk 函数来确保栈空间安全。
是的,_alloca() 函数会调用同样的 _chkstk() 函数,在调整栈指针为分配的内存之前探测栈。