作者a3785lexx (Alex)
看板EE_DSnP
標題[困惑] BddMgr::uniquify的寫法...
時間Sun Jan 17 14:15:51 2010
其實我很不想要來騙P幣的...
但是這個問題我怎麼想都覺得很怪...囧rz
故事沿續自昨天我發現我跑了幾個電路,ref count都不對
最後跟強者我同學伸了uniquify換上去之後
就work了...
我原本的寫法是
BddNodeInt* n = new BddNodeInt(l, r, i);
check the hash table
if found, update n
if not, add n into hash table
return n;
這樣就掛了...
可是如果改成
BddNodeInt* n = 0;
check the hash table
if found, update n
if not,
n = new BddNodeInt(l, r, i);
add n into hash table
return n;
就可以了work了@@"
完全沒有頭緒,不是應該ref count 只會被BddNode控制嗎囧?
怎麼先new和後new我的BddNodeInt結果會不一樣呢@@?
好奇怪呀......我一定是有甚麼觀念沒有搞清楚了...orz
能夠請教請教嗎XD?
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 114.37.88.214
1F:推 cmh317:你先new的話 nodeInt會呼叫node的constructor吧 所以 01/17 14:54
2F:→ cmh317:l,r的 ref count會被+1 所以要是你new出來沒delete 01/17 14:55
3F:→ cmh317:l,r的ref count就會錯吧@@ 01/17 14:55
4F:推 cmh317:在if found的情況下 01/17 14:57
5F:→ a3785lexx:歐懂了! 01/17 15:20
6F:→ a3785lexx:太感謝了!! 01/17 15:20