2012-03-05 145 views

回答

1

在Windows中,堆栈和堆之间有一个防护页,所以堆和堆栈从不触碰。这是出于安全原因(因此堆栈耗尽错误不会导致更易被利用的堆溢出错误)。

如果你问堆满时会发生什么,简单的答案是你的malloc(或HeapAlloc或其他)调用将开始返回NULL。如果您问堆栈满时会发生什么,那么您会遇到堆栈耗尽异常(有时错误地称为堆栈溢出)。在任何情况下,这通常会导致程序释放一些内存并继续或退出到桌面。