[公告] Final Project correction/update
[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
→
01/06 00:13, , 1F
01/06 00:13, 1F
→
01/06 00:57, , 2F
01/06 00:57, 2F
→
01/06 00:59, , 3F
01/06 00:59, 3F
→
01/06 00:59, , 4F
01/06 00:59, 4F
→
01/06 16:19, , 5F
01/06 16:19, 5F
討論串 (同標題文章)