2013年4月1日

递归中隐藏的陷阱 stack overflow

摘要: 在设计程序的时候我们常常使用递归函数,它常常能够使我们的代码简洁明了。但是,这其中也隐藏着一个陷阱——那就是递归深度是有限制的,这点非常容易被初学者忽略。 我们知道函数的每一次调用,参数和返回地址都要入栈,其实函数中的局部变量也是要占用栈空间的(不信可以在函数体内声明一个1000000大小的数组,运行程序直接崩溃,如果把他改成全局变量就没事了)。而栈空间又是比较小的(相对于堆),因此我们的程序如果执行了一个很深的递归调用,就有可能发生stack overflow这样的错误。初学ACM的同学可能会经常发现自己的程序runtime error了,但是又没有数组越界访问,一种很有可能的原因... 阅读全文

posted @ 2013-04-01 21:19 十指之间 阅读(2614) 评论(0) 推荐(1) 编辑

导航