答案可能因操作系统而异,但我很好奇线程通常会预先分配多少堆栈空间。例如,如果我使用:
push rax
将在堆栈上放置一个值并递增rsp
。但是如果我从不使用push
op呢?我想有些空间仍然可以分配,但多少钱?此外,这是一个固定的数量,还是随着物品的数量push
动态增长?
答案 0 :(得分:4)
POSIX没有定义任何有关堆栈大小的标准,它完全取决于实现。由于您标记了此OSX
,因此默认分配为:
当然,这些可以根据您的需求进行配置。分配是动态的:
辅助线程允许的最小堆栈大小为16 KB 堆栈大小必须是4 KB的倍数。这个记忆的空间是 在线程创建时留在进程空间中,但是 与该内存关联的实际页面直到它们才会创建 需要 。
此处包含的细节太多了。我建议你阅读: