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