社区
C语言
帖子详情
递归中如果层数太多导致堆栈溢出,如何捕获这个错误?
otuotu
2002-12-26 01:41:06
用异常处理吗?该怎么用那?拜托写一段例子代码看看。
...全文
829
20
打赏
收藏
递归中如果层数太多导致堆栈溢出,如何捕获这个错误?
用异常处理吗?该怎么用那?拜托写一段例子代码看看。
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
20 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
nullname
2003-05-09
打赏
举报
回复
try
{
}
catch(...)
{
}
Zark
2003-01-14
打赏
举报
回复
如果是用VC6.0,可试试下列代码
#include <windows.h>
#include <stdio.h>
int Recursive(int i)
{
return Recursive(i);
}
void main()
{
__try
{
Recursive(100);
}
__except(EXCEPTION_EXECUTE_HANDLER)
{
if(_exception_code()==0xC00000FD)
puts("overflow");
else
puts("other exception");
}
}
love_snoopy
2003-01-13
打赏
举报
回复
初始化堆栈的时候,把堆栈全部写成一个值,看爱好和数值的出现频率。入栈的时候检查堆栈剩余的大小,或者剩余比较大,就执行PUSH操作,要是比较小了,就检查堆栈后面的空间是不是你设定的预定值,要是是的话,就继续使用,要是不是的话,基本就可以判定已经溢出了。
这个方法操作简单,但是实现复杂。对代码大小和执行时间都有影响。
SwordMan2001
2002-12-29
打赏
举报
回复
在TC3。0下,可以在编译时配置代码生成选项,让生成的代码自动检测栈溢出,
对其它的编译环境,我不大清楚是否有类似功能。
Wenxy1
2002-12-29
打赏
举报
回复
top
cwanter
2002-12-28
打赏
举报
回复
是不是可以大体估算需要的堆栈量,适当增加堆栈大小。
alan118
2002-12-27
打赏
举报
回复
替你up
otuotu
2002-12-27
打赏
举报
回复
***************如何避免递归中的堆栈溢出异常**************
otuotu
2002-12-26
打赏
举报
回复
能简单讲讲吗?急
cwanter
2002-12-26
打赏
举报
回复
看看《核心编程》16章。
otuotu
2002-12-26
打赏
举报
回复
?
liushmh
2002-12-26
打赏
举报
回复
borland c++ builder
windcsn
2002-12-26
打赏
举报
回复
在BLORDLAND CBUILDER
白菜帮主
2002-12-26
打赏
举报
回复
小弟菜鸟,请问windcsn老兄,什么是BCB环境?
谢谢指教.
otuotu
2002-12-26
打赏
举报
回复
以及,我用
try
{
}
catch(...)
{
}
为什么Debug就可运行,但Release就不行
otuotu
2002-12-26
打赏
举报
回复
C++;
try
{
}
catch(...)
{
}
是可以捕获到,但我想具体细化操作,而不是把所有的都捕获。程序框架如下:
int test()
{
return (test()); //1
}
main
{
int temp=test(); //2
}
try ,catch是放在1处还是放在2处好点?
windcsn
2002-12-26
打赏
举报
回复
你在调用递归函数用异常处理,
看你在用什么环境了BCB中是EStackOverFlow例如
int Add(int i)
{
if(i<100000)
Add(i);
return i;
}
int main()
{
try
{
Add(1) ;
}
catch(Exception &EStackOverFlow)
{
....
}
}
fireseed
2002-12-26
打赏
举报
回复
try
{
}
catch(...)
{
}
otuotu
2002-12-26
打赏
举报
回复
大家都不会吗?还是我没讲清楚?就是递归时候条件设置不好,可能会导致
递归层数过多,于是堆栈溢出。我该如何写一段代码来避免报错并从递归中返回那?
otuotu
2002-12-26
打赏
举报
回复
stack overflow!!!
递归
入门、
递归
遍历、
递归
穷举算法
本课程带你从
递归
算法基础入手,课程是精讲大量实际项目
中
常用到的案例,课程深入浅出,包括
递归
入门,
递归
遍历、弟归穷举算法及各种项目,适合算法爱好者一起学习,后附每堂课项目源码,感兴趣可以观注博客,不定期更新
递归
要素及太深
导致
堆栈溢出
怎么办?
递归
太深
导致
堆栈溢出
怎么办? 2个手段: 1.限制
递归
深度,设置一个阈值,超过就返回。 2.在堆上模拟函数调用栈,自己实现压栈出栈,这样就解除了栈溢出的根源问题。
递归
导致
堆栈溢出
递归
导致
堆栈溢出
产生原因:当
递归
深度过大时,不断的调用方法没有返回数据,每次调用都会将方法的临时变量封装为栈帧存入内存栈,等方法返回的时候才会出栈,所以就会出现一直入栈
导致
爆栈或者内存溢出的情况 解决办法:如果无法控制
递归
的深度,就要避免使用
递归
,可以采用循环+栈结构代替
递归
的方式 参考 聊聊面试必考-
递归
思想与实战 如何利用循环代替
递归
以防止栈溢出 ...
【java】
递归
次数过多
导致
堆栈溢出
在写一个算法
中
,由于
递归
调用次数过多,
堆栈溢出
。 堆栈的大小是系统控制的,无法改变。 如果
递归
调用出现问题,可以考虑采取循环的方式来解决,将需要的数据在关键的调用点保存下来使用。简单的说,就是用自己的数据保存方法来代替系统
递归
调用产生的堆栈数据。 溢出的意思就是越界,操作系统会给每个进程分配一个最大上限的堆栈空间,如果超过了这个内存空间大小程序就会coredump,就像你创建一个太大的数组会崩溃...
递归
太深会
导致
栈溢出
如题。在写一个算法
中
,由于
递归
调用次数过多,
堆栈溢出
。 堆栈的大小是系统控制的,无法改变。 如果
递归
调用出现问题,可以考虑采取循环的方式来解决,将需要的数据在关键的调用点保存下来使用。简 单的说,就是用自己的数据保存方法来代替系统
递归
调用产生的堆栈数据。 你原先的
递归
算法设计的有问题。算法正确的情况下,使用过程
中
会出现
堆栈溢出
的话,可以通过修改PLUS函数,利用循环来减少
递归
的
层数
。 1)
C语言
69,382
社区成员
243,073
社区内容
发帖
与我相关
我的任务
C语言
C语言相关问题讨论
复制链接
扫一扫
分享
社区描述
C语言相关问题讨论
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章