【发布时间】:2011-10-02 15:31:49
【问题描述】:
我安装的 Ubuntu 的默认堆栈大小限制为 8 MB。但我很好奇为什么我们需要限制用户程序的堆栈大小。同一个程序可以通过 malloc/mmap 等使用其所有 4 GB(对于 32 位程序)可寻址空间。那么为什么我们需要堆栈大小限制呢?为什么栈不能增长到快碰到堆?
【问题讨论】:
-
我阅读了该线程中的前 4 个答案。它提供了很多有用的信息。但重点是区分堆栈和堆。多次提到堆栈通常具有在线程开始时确定的限制。我的问题是为什么会这样?堆可以在运行时增长。堆栈和堆都是进程的 RAM 和虚拟内存的一部分。那为什么栈大小有限制呢?