当程序需要的内存比最初分配给它的内存更多时会发生什么?

当程序需要的内存比最初分配给它的内存更多时会发生什么?

西蒙弗雷泽大学的讲座,我的理解是每个进程都会获得操作系统为其分配的虚拟地址空间。这是一个基于此的假设问题。假设某个程序分配的虚拟地址空间为 100 -200。现在堆栈从 200 向下增长,堆从 120 向上增长。现在,如果程序需要更多空间,操作系统是否会分配 400 到 900 之类的地址,然后将数据从旧地址空间复制到新地址空间?

答案1

堆栈向下增长,堆向上增长,两者之间的空间称为“空洞”。通常,稀疏地址空间用于保留增长和 DLL 的空洞。通常,操作系统擅长最初分配适当的空间量,但如果我记得在按需分页系统中,它必须进行页面替换。它如何做到这一点取决于使用的算法(有几种)。这将为程序提供更大的虚拟内存框架来工作,所以从根本上说你是正确的。

相关内容