'堆栈空间不足' vb6中for循环的异常

时间:2016-11-21 14:35:03

标签: sql stored-procedures vb6 adodb vb6-migration

% facts

connection(s1,s2).
connection(s2,s3).
connection(s3,s4).
connection(s4,s5).
connection(s5,s6).
connection(s6,s1).

% predicates

direction1(X,Y) :- connection(X,Y).
direction2(X,Y) :- connection(Y,X).

route1(X,Y,R):- route1(X,Y,[],R).
route1(X,Y,_,[X,Y]) :- direction1(X,Y).
route1(X,Y,L,R) :- direction1(X,Z), \+member(Z,L), route1(Z,Y,[Z|L],RZ), R=[X|RZ].

route2(X,Y,R):- route2(X,Y,[],R).
route2(X,Y,_,[X,Y]) :- direction2(X,Y).
route2(X,Y,L,R) :- direction2(X,Z), \+member(Z,L), route2(Z,Y,[Z|L],RZ), R=[X|RZ].

route(X,Y,R) :- route1(X,Y,R); route2(X,Y,R).
  1. gobjCommand是一个ADODB命令对象。

  2. mcolHistory是UID的集合。

  3. 存储过程已在其他块中设置。

  4. 包含' for循环的函数'应该被称为300-350次。每次调用该函数时,' for循环'也被执行了。 ' mcolHistory.Count'的价值大约从1到100不等。
  5. 应该多次调用第5行和第6行。存储过程运行了很多次。
  6. 第5行引发错误'堆栈空间不足'一段时间后,应用程序崩溃。
  7. 请告诉我可能导致此错误的原因?以及如何解决这个问题?*

1 个答案:

答案 0 :(得分:1)

我猜您的问题在上面的代码中不可见。

'Out of stack'确实指向一个无限循环的执行调用方法,直到堆栈已满。

检查mcolHistory.Count是否太大,如果没有,检查你是否递归调用了什么。

相关问题