how does stack growing work on windows and linux?

巧了我就是萌 提交于 2019-11-28 09:49:19

问题


I just read that windows programs call _alloca on function entry to grow the stack if they need more than 4k on the stack. I guss that every time the guard page is hit windows allocates a new page for the stack, therefore _alloca accesses the stack in 4k steps to allocate the space.

I also read that this only applies to windows. How does linux (or other oses) solve this problem if they don't need _alloca?


回答1:


Linux relies on a heavily optimized page fault handling, so what happens is that the program just pushes things on the stack and the page fault handler will extend the stack on the fly.



来源:https://stackoverflow.com/questions/6777765/how-does-stack-growing-work-on-windows-and-linux

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!