2014-05-12 34 views
1

答案可能根据操作系统而有所不同,但我很好奇线程通常会预分配多少堆栈空间。例如,如果我使用:通常为线程保留多少堆栈空间? (POSIX/OSX)

push rax 

,将放在堆栈上的值,并增加rsp。但是如果我从不使用push op呢?我想象一些空间仍然被分配,但多少?此外,这是一个固定的数额,或者它是否动态增长的东西push编辑?

回答

4

POSIX没有定义任何关于堆栈大小的标准,它完全取决于实现。既然你标记这个OSX,默认分配有:

  • 主线程(8MB)
  • 辅助线程(512kB的)

当然,这些可配置,以满足您的需求。的分配是动态的:

允许的最小堆栈大小为辅助线程是16KB和 堆栈大小必须是4 KB的倍数。这个内存空间是 在创建线程的时候你的进程空间预留,但与记忆相关的 实际页面不创建它们 需要至。

这里包含太多的细节。我建议你阅读:

Thread Management (Mac Developer Library)

+0

真棒,正是我一直在寻找。谢谢 – sircodesalot

相关问题