作者ric2k1 (Ric)
看板EE_DSnP
标题[公告] Final Project correction/update
时间Tue Jan 5 21:59:40 2010
[01/05] (9:00pm) 修正 #define BDD_NODE_PTR_MASK
原先的 BDD_NODE_PTR_MASK 被定义成
((UINT_MAX >> BDD_EDGE_BITS) << BDD_EDGE_BITS)
但由於 UINTMAX 在 64-bit platform 上 (大部分) 等於 4294967295U (32-bit)
所以当 pointer (64-bit) address > 4294967295U (i.e. 0xFFFFFFFF) 时,
BddNodeInt* getBddNodeInt() const {
return (BddNodeInt*)(_nodeV & BDD_NODE_PTR_MASK); }
就会得到 garbage address.
虽然上述问题不一定会发生,但还是建议将 BDD_NODE_PTR_MASK 的定义改成:
#define BDD_NODE_PTR_MASK
((~(size_t(0)) >> BDD_EDGE_BITS) << BDD_EDGE_BITS)
> Affected: src/bdd/bddNode.h
> Note: 暂时不更新 ref code & prog, 请大家自行修订。
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 61.224.46.86
1F:→ slinh:偷偷问 bddref 的bsetv 3 8 好像不会作isValidVarName? 01/06 00:13
2F:→ ric2k1:跟据 website 定义的 command usage, bsetv 3 8 是可以的哦 01/06 00:57
3F:→ ric2k1:然後如果 bddName is a string, 就存到 _bddMap, 如果是int 01/06 00:59
4F:→ ric2k1:就存到 _bddArr. 01/06 00:59
5F:→ ric2k1:更新 project website. 01/06 16:19