如果堆栈内存已满,会发生什么

时间:2015-02-11 10:51:52

标签: .net

可能是我的问题无关紧要,因为堆栈有1MB内存可能永远不会发生。

但是如果堆栈内存变满,会发生什么。因为垃圾收集器不会执行堆栈清理。

3 个答案:

答案 0 :(得分:2)

当堆栈填满时,您会收到StackOverflowException例外。

当然,如果你的代码有一个导致失控递归的错误,或者你使用递归来实现一个不适合递归的算法,例如线性搜索,那么堆栈可能会填满。

您可以非常轻松地检查失控递归会发生什么:

static void Main( string[] args )
{
    Main( args );
}

答案 1 :(得分:2)

堆栈溢出很容易:

int* ptr = stackalloc int[4000000];

将发生StackOverflowException。

答案 2 :(得分:1)

我绝对不是专家,但我的猜测是StackOverflowException

我认为你不会填满整个1MB的堆栈。