1
当进程的虚拟内存中堆栈和堆之间的未使用内存空间耗尽时会发生什么?进程虚拟内存 - 堆栈和堆之间的空间
当进程的虚拟内存中堆栈和堆之间的未使用内存空间耗尽时会发生什么?进程虚拟内存 - 堆栈和堆之间的空间
在Windows中,堆栈和堆之间有一个防护页,所以堆和堆栈从不触碰。这是出于安全原因(因此堆栈耗尽错误不会导致更易被利用的堆溢出错误)。
如果你问堆满时会发生什么,简单的答案是你的malloc(或HeapAlloc或其他)调用将开始返回NULL。如果您问堆栈满时会发生什么,那么您会遇到堆栈耗尽异常(有时错误地称为堆栈溢出)。在任何情况下,这通常会导致程序释放一些内存并继续或退出到桌面。