how does stack growing work on windows and linux?

2019-01-28 15:58发布

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条回答
太酷不给撩
2楼-- · 2019-01-28 16:51

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.

查看更多
登录 后发表回答