看板 EE_DSnP 關於我們 聯絡資訊
我在寫bddNode operator &的時候 return _BddMgr->ite(*this,n,_zero); 然後在ite裡面當要讀取 _zero的Level的時候就crash了 但是_zero應該在一開始bddMgr::init()的時候就有指到東西了 也檢查過 uniquify(0,0,0) 的時候也有把bddMgr::terminal建立起來 我猜可能是這個constructor有問題 BddNode::BddNode(BddNodeInt* n, BDD_EDGE_FLAG f) { assert(n != 0); // TODO _nodeV = size_t(n) + f; n->incRefCount(); } 因為剛建完 BddNode::_one = BddNode(BddNodeInt::_terminal, BDD_POS_EDGE); 嘗直接呼叫 _one.getLevel() 就會crash 囧 不過還是不知道該怎麼處理... 還是問題出在其他地方...? -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.112.174.178 ※ 編輯: Peter034 來自: 140.112.174.178 (06/19 16:11)
ric2k1:有可能是你的 Hash 的問題... 確定有 new 出一個BddNodeInt 06/19 21:49
ric2k1:給 _terminal 嗎? 06/19 21:49
Peter034:有 我在BddNodeInt::_terminal = uniquify(0, 0, 0);之後 06/19 23:45
Peter034:測試 cout<<BddNodeInt::_terminal->getLevel() 06/19 23:46
Peter034:以及 BddNodeInt::_terminal->getRefCount() 都能得到0 06/19 23:47
ric2k1:那可以在 debugger 裡 display BddNodeInt::_terminal 06/19 23:51
ric2k1:然後 step/next 看看是在哪裡被 corrupted 掉的... 06/19 23:51
Peter034:謝謝老師 我再努力研究一下 06/20 00:42
Peter034:發現癥結所在了 operator"="裡面有判斷式寫錯了!! 06/20 01:05
ric2k1:XD good news... 06/20 01:08
Peter034:真是非常感謝老師! 06/20 14:20
muxiv: _terminal http://yofuk.com 07/12 00:18