如何在不使用递归的情况下故意触发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++?