如何在不使用递归的情况下故意触发StackOverflowException

本文关键字:故意 情况下 StackOverflowException 递归 | 更新日期: 2023-09-27 18:10:54

我被告知每个方法都有一个1mb大小的堆栈。所以我假设在一个方法中初始化256个整数值会导致StackOverflowException。我在代码中尝试过,但没有抛出异常。

那么,如何在不使用递归的情况下故意触发StackOverflowException ?

如何在不使用递归的情况下故意触发StackOverflowException

use

throw new StackOverflowException ();

stackalloc可能是最简单的方法(假设您希望运行时抛出错误,而不是您自己):

    unsafe void Boom()
    {
        int* data = stackalloc int[512 * 1024]; // 2MB
    }

我将添加另一个方法:-)

unsafe struct FixedBufferExample
{
    public fixed byte Buffer[128 * 1024]; // This is a fixed buffer.
}

现在这个结构是128kb:-)如果你声明一个FixedBufferExample类型的局部变量(不使用yield或async的方法),它应该使用128kb的堆栈。你可以很快用完你的堆栈