作者HigherKuo (我需要好运)
看板EE_DSnP
标题Re: [问题] test.cpp
时间Fri Jun 20 20:54:47 2008
※ 引述《HigherKuo (我需要好运)》之铭言:
: 我执行test.cpp
: 马上就错在
: BddNode::BddNode(size_t): Assertion `v!=0' failed.
: 但是似乎又连test.cpp main()第一行都还没执行到
: 请教一下程式哪里呼叫了BddNode(size_t)这个constructor呢?
: 感谢!
我发现问题了,但是我不知道该如何解决,请教大家!
在bddMgr::init里面先initial _terminal 利用uniquify(0, 0, 0)
在uniquify里面检查hash,第一次bddHash::check一定会回传false
所以跑到 n = BddNodeInt(l, r, i) 同样的传入了(0, 0, 0)
在BddNodeInt constructor写的是 _left(l)... _left是BddNode的型态
所以又呼叫了BddNode的constructor 同样的又传入了 "0"
但是在BddNode(size_t v) 这个constructor里面
要判断v!=0 ← 程式在此就fault了
想请问一下,这个流程中我忽略了哪个步骤吗?应该如何解决呢?
感谢!
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 140.112.4.234
1F:推 ric2k1:为什麽要判断v!=0 ? 06/20 22:10
2F:推 s2kip:应该不用assert v!=0吧 而是不是零的时候要做改refCount之类 06/21 01:28
3F:→ s2kip:的动作吧 06/21 01:28
4F:推 ric2k1:楼上正解 06/21 02:11
5F:→ HigherKuo:大感谢楼上两位!!! 06/21 09:23