作者anfranion (南‧生命的意義是經歷)
看板EE_DSnP
標題[情報] _BddMgr和bddMgr 一場美麗的誤會
時間Tue Jan 19 16:58:54 2010
剛剛debug de了好幾個小時
終於抓到錯誤
就是說
在這整份程式裡面
存在一個名為
bddMgr 的全域變數
而在bddNode裡
存在一個叫做_BddMgr的static變數
我在bddNode裡,把後者寫成了前者
compile當然順利過了,但是無止境的bug現在才開始
我在testBdd.cpp卡了很久,
xor怎麼樣都不過
最後我終於發現
最開始的那些變數,他們被插入了不同的hash table裡
(後來的被我插到全域變數裡了)
所以
當然會需要再產生新的node......
如果有人有發生類似的問題,請注意這件事情
分享之orz
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 140.112.30.37
※ 編輯: anfranion 來自: 140.112.30.37 (01/19 16:59)
1F:推 MacacaXDrz:為什麼我不知有_BddMgr可是一路到最後都沒有錯囧|||? 01/19 17:04
2F:→ MacacaXDrz:所以我的CODE其實是錯的嗎Q_Q? 01/19 17:05
3F:→ yclanner:嗯.. 這兩個在呼叫完BddMgr::init後是一樣的吧...? 01/19 17:10
4F:→ anfranion:在testBdd.cpp裡會不一樣 01/19 17:17
5F:→ anfranion:然後為什麼呼叫完會一樣@@ 01/19 17:18
6F:推 flarehunter:我也碰到過一樣的問題…debug de了三個小時… 01/19 19:40
7F:推 yclanner:跑testBdd.cpp的時候我不太確定 但真正跑程式的時候 01/19 20:14
8F:→ yclanner:因為BddMgr只有一個 且在init的時候就會把這唯一一個的 01/19 20:14
9F:→ yclanner:pointer 給了_bddMgr 01/19 20:15
10F:推 ric2k1:(sorry sorry) 我也是後來才發現我這樣寫... 實在是不好 01/19 20:16
11F:→ yclanner:by class BddNode裡的static function setBddMgr() 01/19 20:16
12F:→ yclanner:所以應該是一樣的吧.... 01/19 20:16
13F:→ ric2k1:以後 (如果還有以後) 會改掉! 01/19 20:16
14F:→ ric2k1:(筆記) 不要用 global 變數... 01/19 20:17
15F:→ anfranion:假設沒有呼叫set就會壞掉~ testbdd就沒有 01/20 00:04