| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 2004 人关注过本帖
标题:求助,关于vb溢出堆栈空间问题
只看楼主 加入收藏
道殇千年
Rank: 1
等 级:新手上路
帖 子:6
专家分:0
注 册:2012-12-7
结帖率:100%
收藏
已结贴  问题点数:10 回复次数:4 
求助,关于vb溢出堆栈空间问题
Public Sub time()
Xn = n * (Xt - X0) + X0
Yn = n * (Yt - Y0) + Y0
n = n + k
main.role.Picture = scr.PictureClip1.GraphicCell(ri + Int(r / 4))
r = r + 1
Call movemap
If r = 16 Then r = 0
If (Xn - X0) ^ 2 >= (Xt - X0) ^ 2 Or GetPixel(main.Picture3.hdc, Xn + main.role.Width / 2, Yn + main.role.Width / 1.1) = 0 Then
Call stopwalk
End If
Call draw(xs, ys)
End Sub
Public Sub stopwalk()
n = n - 2 * k
Call time
main.Timer1.Enabled = False
main.role.Picture = scr.PictureClip1.GraphicCell(ri)
End Sub
就是上面程序,vb提示call time 堆栈空间溢出。
这怎么改改才好?
搜索更多相关主题的帖子: 空间 
2012-12-14 23:09
风吹过b
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:364
帖 子:4947
专家分:30084
注 册:2008-10-15
收藏
得分:10 
你写成循环吧。
当递归调用 次数不可控的情况下,就有可能出现 堆栈空间溢出。

授人于鱼,不如授人于渔
早已停用QQ了
2012-12-15 10:11
道殇千年
Rank: 1
等 级:新手上路
帖 子:6
专家分:0
注 册:2012-12-7
收藏
得分:0 
回复 2楼 风吹过b
具体该怎么样改呢,版主?把call time中的内容写成循环嵌入到stopwalk中去?还有什么叫递归调用啊?求教育啊!我新手。
2012-12-15 12:01
风吹过b
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:364
帖 子:4947
专家分:30084
注 册:2008-10-15
收藏
得分:0 
一个函数或过程,直接或间接继续调用自己 ,就叫递归。

Sub time() 中 调用了 Sub stopwalk()
而 Sub stopwalk() 中又调用了 time() ,形成 循环调用,这种情况下就叫 递归。

没看懂你程序段要干什么,所以其它的爱莫能助。

授人于鱼,不如授人于渔
早已停用QQ了
2012-12-16 10:54
道殇千年
Rank: 1
等 级:新手上路
帖 子:6
专家分:0
注 册:2012-12-7
收藏
得分:0 
thank you!
2012-12-16 12:04
快速回复:求助,关于vb溢出堆栈空间问题
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.024247 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved