作者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