作者angelicdream (Angelic Dream)
看板EE_DSnP
標題[問題] BddTest的問題
時間Mon Jan 18 01:09:54 2010
我現在遇到幾個情況...
1.沒有做standardize情況下,第四個
BddNode i = f ^ (c | d)
會變成
[4](+) 0x98b5090 (1)
[2](+) 0x98b5008 (1)
[1](+) 0x98b4ff8 (1)
[0](+) 0x98cca70 (22)
[0](-) 0x98cca70 (22) (*)
[0](-) 0x98cca70 (22) (*)
[3](+) 0x98b5068 (1)
[2](+) 0x98b5040 (1)
[1](+) 0x98b5030 (1)
[0](+) 0x98cca70 (22) (*)
[0](-) 0x98cca70 (22) (*)
[0](-) 0x98cca70 (22) (*)
[2](-) 0x98b4fb0 (2)
[1](+) 0x98b48b0 (3)
[0](+) 0x98cca70 (22) (*)
[0](-) 0x98cca70 (22) (*)
[0](-) 0x98cca70 (22) (*)
但加上standardize 後
就便成ref的樣子了...
看起來是有甚饃觀念沒搞懂= = 這樣看起來是BddNode 被重複了好幾個~?
另一個問題是:
當standardize寫好,前面的變數都是對的
但是後面的ref count會出錯,如
[4](+) 0x9274020 (1)
[2](+) 0x9273fb0 (4)
[1](+) 0x92738b0 (3)
[0](+) 0x928ba70
(16)
[0](-) 0x928ba70 (
16) (*)
[0](-) 0x928ba70
(16) (*)
[3](+) 0x9273ff8 (1)
[2](+) 0x9273fb0 (4) (*)
[2](-) 0x9273fb0 (4) (*)
然後我測試發現,位於比較低level的變數,如第五個式子的 j = ~a | ~b
cout << a 會發現他被多count 一次, 下面的_one 和_zero 也同樣如此.
看起來是程式把~a存起來呢...究竟是為甚饃呢!!??
很有可能是哪裡寫壞了....
有請高手幫忙了...
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 140.112.4.185
1F:推 a3785lexx:要不要看看uniquify有沒有寫錯? 01/18 01:14
2F:→ a3785lexx:#1BKgiQQz 我de了三四個小時 01/18 01:15
3F:→ angelicdream:就是他!!!!!! 我剛剛把hash改掉之後就對了!! 01/18 01:16
4F:→ angelicdream:連standardize拿掉也沒問題了... 01/18 01:18
5F:→ angelicdream:所以我死在以為最沒有錯的hash上面= = 01/18 01:18
6F:→ angelicdream:原來我跟dryman是在同一個奇妙物語裡.... 01/18 01:18