作者dryman (dryman)
看板EE_DSnP
标题Re: [讨论] BddNode and BddNodeInt
时间Mon Jan 11 21:58:35 2010
看完宝典後,对refCount还是有一点小小的疑问:
就是call BddNode destructor时,该怎麽处理refCount
如果refCount > 1
那就很单纯的 --refCount
不过问题就在refCount == 1 及 refCount == 0 时
我记得上课时有讲到在BddNode copy constructor被呼叫时会有case 0 ??
这份影片还没上传所以无法查证ˊˋ
refCount == 1 直接 delete BddNodeInt* 这样行吗?
会不会有例外情况@ @"
宝典上面是说call destructor 时直接 --refCount就行
可是好像没有那麽单纯..ˊˋ
另外是BddNode的其中一个constructor
// Need to check if n._nodeV !=0
BddNode(size_t v): _nodeV(v)
{
//TODO
}
请问这是不是应该将注解改成check v != 0 或getBddNodeInt() != 0啊?
写到这边挺疑惑的说orz|||
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 114.45.170.8
1F:推 mymaydayya:既然count=0 还有可能被BddNode的destruct呼叫吗? 01/11 22:03
2F:→ mymaydayya:count=0应该就没有BddNode指到他了吧 01/11 22:04
3F:→ dryman:有道理XD count应该不会为零 01/11 22:11
4F:→ dryman:那麽if (--count == 0 ) 时一定可以delete BddNodeInt吗? 01/11 22:13
5F:→ dryman:想起来了,destructor应该没问题:D 01/11 22:29
6F:推 herbert570:不一定喔! 01/11 22:42
7F:→ herbert570:注意 bddArr 和 bddMap 存放的都只是 size_t! 01/11 22:42
8F:→ herbert570:所以如果直接把他们 delete 掉,有可能出错 01/11 22:42
9F:→ dryman:嗯嗯,谢谢楼上:D 01/11 23:13
default constructor:
BddNode() : _nodeV(0) {}
在BddMgr里面有很多地方会叫到这个
所以destructor, "=" 要处理 _nodeV本来为零的情况
※ 编辑: dryman 来自: 114.45.170.8 (01/11 23:29)