3

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

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

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

4

1 回答 1

3

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

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

于 2012-04-30T11:30:29.353 回答