Cui*_*崔鹏飞 7 .net c# stack-overflow recursion
有人告诉我,每个方法的堆栈大小都是1mb.所以我假设在一个方法中初始化256个整数值将导致StackOverflowException.我在代码中尝试过,但没有抛出任何异常.
那么,如何在不使用递归的情况下故意触发StackOverflowException?
stackalloc
可能是最简单的方法(假设您希望运行时抛出错误,而不是您自己):
unsafe void Boom()
{
int* data = stackalloc int[512 * 1024]; // 2MB
}
Run Code Online (Sandbox Code Playgroud)
我将添加另一种方法:-)
unsafe struct FixedBufferExample
{
public fixed byte Buffer[128 * 1024]; // This is a fixed buffer.
}
Run Code Online (Sandbox Code Playgroud)
现在这个结构是128kb :-)如果你声明一个局部变量(一个不使用yield或async的方法)的类型,FixedBufferExample
它应该使用128kb的堆栈.你可以很快用完你的堆栈.
归档时间: |
|
查看次数: |
724 次 |
最近记录: |