可能是我的问题无关紧要,因为堆栈有1MB内存可能永远不会发生。
但是如果堆栈内存变满,会发生什么。因为垃圾收集器不会执行堆栈清理。
答案 0 :(得分:2)
当堆栈填满时,您会收到StackOverflowException
例外。
当然,如果你的代码有一个导致失控递归的错误,或者你使用递归来实现一个不适合递归的算法,例如线性搜索,那么堆栈可能会填满。
您可以非常轻松地检查失控递归会发生什么:
static void Main( string[] args )
{
Main( args );
}
答案 1 :(得分:2)
堆栈溢出很容易:
int* ptr = stackalloc int[4000000];
将发生StackOverflowException。
答案 2 :(得分:1)
我绝对不是专家,但我的猜测是StackOverflowException
。
我认为你不会填满整个1MB的堆栈。