精華區beta EE_DSnP 關於我們 聯絡資訊
※ 引述《davidlue (諮詢暨策略主任)》之銘言: : 想請大家幫忙一下orz : 我的執行結果,BDD和reference program是一樣的 : 但是reference count不一樣 : 例如原本的test.cpp : 執行結果是 : [3](+) 0x960b8b8 (1) : [1](+) 0x960a870 (5) : [0](+) 0x960a860 (11) : [0](-) 0x960a860 (11) (*) : [2](+) 0x960a8b0 (1) : [1](+) 0x960a870 (5) (*) : [0](-) 0x960a860 (11) (*) : ==> Total #BddNodes : 4 : [3](+) 0x960b8b8 (2) : [1](+) 0x960a870 (5) : [0](+) 0x960a860 (12) : [0](-) 0x960a860 (12) (*) : [2](+) 0x960a8b0 (1) : [1](+) 0x960a870 (5) (*) : [0](-) 0x960a860 (12) (*) : ==> Total #BddNodes : 4 : (reference program是 1 4 11 11 1 4 11和 1 3 9 9 1 3 9) : 尤其是第二個,node[3] 的reference count竟然是2真的很奇怪..||| : 但是BDD一樣的話應該ite是沒有錯的呀.... : 這樣問題是出在 = operator嗎orz 第二個 "[3](+) 0x960b8b8 (2)" reference count 會等於2的原因, 是因為多了 "e = ...." 這個 assignment, 所以 "0x960b8b8" 這個 BddNodeInt* 就多了一個 BddNode 指到他了. 所以我猜你應該是 "= operator" 忘了加 reference count 了吧? 可以試試看多加這幾行到你的程式--- BddNode f = e; cout << f << endl; BddNode g = f; cout << g << endl; .... 或者 --- cout << a << endl; BddNode aa = a; cout << aa << endl; -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.112.21.240
davidlue:感謝老師m(_ _)m 終於懂了~||| 01/11 18:44