作者ric2k1 (Ric)
看板EE_DSnP
标题Re: [问题]有关refCount...
时间Thu Jan 11 13:13:45 2007
※ 引述《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
1F:推 davidlue:感谢老师m(_ _)m 终於懂了~||| 01/11 18:44