Memory 为什么堆栈溢出?

Memory 为什么堆栈溢出?,memory,stack,Memory,Stack,嗯。所以我对可执行文件在内存中的布局的理解是。。。图像为一个方形框,表示应用程序可访问的内存 程序代码位于内存的底部,堆栈被分配到程序代码之外的位置,并向上分配。堆从内存顶部开始,向下分配 如果是这种情况,为什么可以分配比堆栈内存更多的堆内存 因为即使在拥有大量可用虚拟内存的现代系统上,调用堆栈的最大大小通常也被有意限制在1MB以内 这通常不是一个基本限制;可以对此进行修改(例如在Linux中使用,或在Java中使用)。但需要这样做通常表明程序异常;如果您有大型数据集,它们通常应该存储在堆上

嗯。所以我对可执行文件在内存中的布局的理解是。。。图像为一个方形框,表示应用程序可访问的内存

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


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

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

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