Jag undrar om det är möjligt att få StackOverflowException med en korrekt konstruerad rekursion. Alltså genom att anropa sig själv för många gånger helt enkelt (ingen oändlig loop, men var går den gränsen?)
Jag har lite C#-kod som jag kör i VS.NET 2005, och den kraschar när jag ger den större problem, men inte när den löser ett mindre.
Kan man kontrollera hur det är med stacken så att man kan avbryta/minska rekursionen under körning av programmet om stacken skulle ta slut?
Jag googlade runt lite och såg att det var massor som frågade efter just detta, men hittade inga konkreta svar förutom "är du säker att du inte gjort något fel 1 Mb borde räcka" (1 Mb skall tydligen vara standard).
Jag vet inte hur du skall göra kanske du skall använda exceptions för att avbryta men det känns ju inte som en bra lösning heller. Intressant om någon annan hittar svar på detta.
För övrigt så har .NET CLR stöd för något som kallas tailcall som rensar stacken när datat i den inte behövs längre. Tyvärr så genererar inte C#-kompilatorn en sån instruktion: http://www.cookcomputing.com/blog/archives/000200.html
Jag provade att begränsa hur många nivåer rekursionen fick hålla på, och kom fram till att 500 bara löste en liten del av problemet, och förmodligen skulle 4000 inte vara nog. Med de siffrorna kan man ju gissa att den icke-oändliga stacken kan ta slut =)
248 ms totalt · 4 externa anrop · v20260731065814-full.d34c6d5a