作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我想问下exception :"exception Stack_overflow"是否会导致死循环,特别是异常出现在下面的代码中:
( *the loop "while" should stop when both stacks are empty*)
while (not (Stack.is_empty stackFalse) )|| ( not (Stack.is_empty stackTrue)) do
(
if (not ( Stack.is_empty stackTrue )) then
(
let q1 = Stack.pop stackTrue in
let (_,_,ptrs) = fst (Hashtbl.find graph ( fst q1) ) in
List.iter ( fun elem ->
let app = Hashtbl.find graph elem in
let (typeNode,last,ptrs') = fst app in
if typeNode = "Or-node" then
(
Stack.push (elem,true) stackTrue;
Hashtbl.add labeled elem true
)
else if last = false then
Hashtbl.replace graph elem ((typeNode,true,ptrs'),snd app)
else
(
Stack.push (elem,true) stackTrue;
Hashtbl.add labeled elem true
) ) ptrs ;
);
if (not ( Stack.is_empty stackFalse )) then
(
let q2 = Stack.pop stackFalse in
let (_,_,ptrs1) = fst (Hashtbl.find graph (fst q2) )in
List.iter ( fun elem ->
let app = Hashtbl.find graph elem in
let (typeNode,last,ptrs') = fst app in
if typeNode = "And-node" then
(
Stack.push (elem,false) stackFalse;
Hashtbl.add labeled elem false
)
else if last = false then
Hashtbl.replace graph elem ((typeNode,true,ptrs'),snd app)
else
(
Stack.push (elem,false) stackFalse;
Hashtbl.add labeled elem false
) ) ptrs1 ;
);
)
done;
最佳答案
标准急救:使用 -g 重新编译并使用 OCAMLRUNPARAM=b(参见手册)运行以查看回溯。
PS 我怀疑结构比较(例如 Hashtbl.find 使用的),hashtbl 元素中是否有任何循环引用?
关于ocaml - ocaml 中的异常 "Stack_overflow",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4605091/
我的快速排序代码适用于 N(列表大小)的某些值,但对于大值(例如,N = 82031),OCaml 返回的错误是: Fatal error: exception Stack_overflow. 我做错
所以我刚刚来到书中解释堆栈的部分。以下是它们在我的书中的定义方式(代码): #include #define STACK_SIZE 100 int contents[STAC_SIZE] int t
我想问下exception :"exception Stack_overflow"是否会导致死循环,特别是异常出现在下面的代码中: ( *the loop "while" should sto
如果在 .dll 中使用此代码, 对 socket.recv() 的调用会引发一个异常 STACK_OVERFLOW,但是当此代码编译为 .exe 时,它可以正常工作。 为什么? 我通过“C:\win
我是一名优秀的程序员,十分优秀!