作者eplis (Eplis)
看板C_Sharp
标题[问题] stackoverflow
时间Mon Feb 9 16:48:10 2015
今天看书在测试一个fuction
public test(int i)
{
if(i>10)
{
i--;
test(i);
}
}
使用 test(50); 呼叫时没问题
使用 test(9999); 会弹出 stackoverflow exception
想请问是甚麽会造成这样的原因?
我若用 for回圈则没这个问题
for(int i=9999; i>10 ; i--)
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 218.35.164.7
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/C_Sharp/M.1423471694.A.48D.html
1F:→ wenyonba: 因为test(9999)递回的次数太多,用光了stack的记忆体 02/09 16:51
2F:推 les5277: 来试试 不同电脑应该会有不同的反应 02/09 20:24
3F:→ TobyH4cker: 一楼正解 02/09 22:31
4F:→ TobyH4cker: 每一次递回就多一层stack frame,如果能的话尽量用第 02/09 22:33
5F:→ TobyH4cker: 二种方法 02/09 22:33
6F:→ wenyonba: 不同电脑会不会有不同反应在C#我就没去看,不过以前C++, 02/09 22:39
7F:→ wenyonba: stack大小是编译的时候指定,跟电脑无关 02/09 22:39
8F:→ wenyonba: 刚刚查了一下C#也是一样,不指定的话预设1MB 02/09 22:44
9F:→ VVll: 你要先弄懂 递回的资源管理 02/10 01:44
10F:→ zg0608x: 看标题还以为在问知名网站 02/16 17:38