内核如何决定堆栈大小

时间:2012-11-16 22:28:52

标签: linux gcc linux-kernel stack-overflow

只是想知道进程何时开始如何确定其堆栈要求,或者每个进程是否以默认堆栈大小开始并且根据需要动态增长。
在我的系统上,堆栈大小的软限制为10M,硬限制为unlimited。这是否意味着堆栈可以增长到最大可用RAM? 如果我的进程中有十几个线程,那么堆栈大小会有所不同(假设我没有设置堆栈属性)

1 个答案:

答案 0 :(得分:1)

每个进程都以最小尺寸的用户空间堆栈启动,并根据需要自动扩展。

如果违反了软限制,则该过程将终止。该过程可能会提高其自身的软限制,但不高于硬限制。

即使软限制是无限制的,最大可用堆栈大小也受进程地址空间中其他映射的限制,因为它必须是连续的。