【问题标题】:Why does the stack overflow?为什么堆栈溢出?
【发布时间】:2012-05-10 02:35:10
【问题描述】:

好的。因此,我对可执行文件在内存中的布局方式的理解是... 将一个方框表示为您的应用可访问的内存。

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

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

【问题讨论】:

    标签: memory stack


    【解决方案1】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2010-11-09
      • 2021-06-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-09-11
      相关资源
      最近更新 更多