Reputation: 8305
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?
Upvotes: 9
Views: 921
Reputation: 111820
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.
Upvotes: 6
Reputation: 1062512
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
}
Upvotes: 8