堆栈溢出在.Net世界中实际意味着什么?

Kar*_*rel 1 .net stack-overflow

堆栈溢出在.Net垃圾收集世界中实际意味着什么?

Jon*_*eet 11

完全和其他地方一样 - 你已经炸掉了堆栈,通常是因为你的回复很糟糕.例如:

public int Foo(int x)
{
    return Foo(x + 1);
}
Run Code Online (Sandbox Code Playgroud)

现在这个例子可以通过尾递归进行优化,在这种情况下它将永远运行 - 但是否则(在更一般的情况下,尾递归不可行),这将为每个递归调用推送一个新的堆栈帧到Foo......并且永远不会弹出那些堆栈帧,因为调用永远不会实际返回.

这与垃圾收集无关.