I was told that every method has a stack the size of 1mb. So I assumed that initializing 256 integer values in one method will cause a StackOverflowException. I tried that in code, but no exception was thrown.
So, how to deliberately trigger a StackOverflowException without using recursion?
use
throw new StackOverflowException ();
stackalloc
is probably the easiest way (assuming you want the runtime to throw the error, rather than yourself):
unsafe void Boom()
{
int* data = stackalloc int[512 * 1024]; // 2MB
}
I'll add another method :-)
unsafe struct FixedBufferExample
{
public fixed byte Buffer[128 * 1024]; // This is a fixed buffer.
}
Now this structure is 128kb :-) If you declare a local variable (of a method that doesn't use yield or async) of type FixedBufferExample
it should use 128kb of stack. You can use up your stack quite quickly.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With