为什么堆栈溢出?

时间:2012-04-30 11:27:56

标签: memory stack

确定。所以我对可执行文件在内存中的布局方式的理解是...图像一个方框,代表你的应用程序可以访问的内存。

程序代码驻留在内存的底部,堆栈被分配到程序代码之外的一个位置并向上分配。堆从内存顶部开始,向下分配。

如果是这种情况,为什么可以分配比堆栈内存更多的堆内存?

1 个答案:

答案 0 :(得分:3)

因为即使在具有大量可用虚拟内存的现代系统上,调用堆栈的最大大小通常也会被限制为1MB。

这通常不是一个基本限制;可以修改它(在Linux中使用例如setrlimit(),或者在-Xss flag用于Java)。但需要这样做通常表示程序异常;如果你有大型数据集,它们通常应该存储在堆上。