如何在不使用递归的情况下故意触发StackOverflowException?
我被告知每种方法都有1MB大小的堆栈。 所以我假定在一个方法中初始化256个整数值将导致StackOverflowException。 我在代码中试过,但没有抛出异常。
那么,如何在不使用递归的情况下故意触发StackOverflowException?
我会添加另一种方法:-)
unsafe struct FixedBufferExample
{
public fixed byte Buffer[128 * 1024]; // This is a fixed buffer.
}
现在这个结构是128kb :-)如果你声明一个类型为FixedBufferExample
的本地变量(不使用yield或async的方法),它应该使用128kb的堆栈。 你可以很快用完你的堆栈。
使用
throw new StackOverflowException ();
stackalloc
可能是最简单的方法(假设你希望运行时抛出错误,而不是你自己):
unsafe void Boom()
{
int* data = stackalloc int[512 * 1024]; // 2MB
}
链接地址: http://www.djcxy.com/p/80753.html
上一篇: how to deliberately trigger a StackOverflowException without using recursion?
下一篇: gcc: is there no tail recursion if I return std::string in C++?