我刚刚读到 Windows 程序如果需要超过 4k 的堆栈,则在函数入口处调用 _alloca
来增加堆栈。我猜测每次访问保护页面时,Windows 都会为堆栈分配一个新页面,因此 _alloca
以 4k 步访问堆栈来分配空间。
我还了解到这仅适用于 Windows。如果linux(或其他操作系统)不需要_alloca
,如何解决这个问题?
最佳答案
Linux 依赖于高度优化的页面错误处理,因此程序只是将内容推送到堆栈上,页面错误处理程序将动态扩展堆栈。
关于windows - 堆栈增长在 Windows 和 Linux 上如何工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19501672/