注册 登录
编程论坛 VB6论坛

求助,关于vb溢出堆栈空间问题

道殇千年 发布于 2012-12-14 23:09, 2004 次点击
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 堆栈空间溢出。
这怎么改改才好?
4 回复
#2
风吹过b2012-12-15 10:11
你写成循环吧。
当递归调用 次数不可控的情况下,就有可能出现 堆栈空间溢出。
#3
道殇千年2012-12-15 12:01
回复 2楼 风吹过b
具体该怎么样改呢,版主?把call time中的内容写成循环嵌入到stopwalk中去?还有什么叫递归调用啊?求教育啊!我新手。
#4
风吹过b2012-12-16 10:54
一个函数或过程,直接或间接继续调用自己 ,就叫递归。

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

没看懂你程序段要干什么,所以其它的爱莫能助。
#5
道殇千年2012-12-16 12:04
thank you!
1