作者ric2k1 (Ric)
看板EE_DSnP
標題Re: [問題] FEC
時間Sun Jan 13 01:44:20 2013
※ 引述《XDucka (Duck)》之銘言:
: for_each(fecGrp, fecGrps):
: Hash<SimValue, FECGroup> newFecGrps;
: for_each(gate, fecGrp)
: grp = newFecGrps.check(gate);
: if (grp != 0) // existed
: grp.add(gate);
: else createNewGroup(newFecGrps, gate);
: CollectValidFecGrp(newFecGrps, fecGrp, fecGrps);
: 有一點小看不太懂 所以憑感覺寫:
: createNewGroup -> new一個vector把那個gate塞進去然後再把這個vector的指標
: forceInsert到Hash裡
可以這麼說
: CollectValidFecGrp -> 看他們的size是不是2以上 是的話把這個grp push_back
: 到當前的fecGrps 小於2的話立馬 delete (<---雖然gdb不是說錯在這行 但是可以在
: 這邊就delete嗎@@?會不會造成下面這行的錯誤@@?)
: 然後外面還要把newFecGrp push_back進來之前的fecGrps都delete掉(<----gdb就說在這邊
: 有invalid pointer 可能是哪邊不能delete呢@@?)
: 這樣delete還有沒有可能哪邊有memory leak呢@@?
大致上是對的,但不要忘記有個東西叫 swap(),可能會乾淨一些 XD
: 今天下午原本用vector<vector<CirGate*>*>
: 但是把某些new出來的vector delete掉的時候
: 會出現許多種不同的segement fault
: 所以想說先跑出來再說 改成用vector<vector<CirGate*> > ....
: 結果跑小小電路的時候對是對了=.=
: 但是晚上測sim13發現不但跑超久 而且記憶體花了1G....(下定決心要重來...)
: 結果剛剛才被前年的文章雷到 早知道早點被雷>.<
: 看來明天還是回去用vector<vector<unsigned>*>來砍掉重練一次好了
我都忘記有這個雷文了,哈哈...
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 1.160.39.57
1F:→ XDucka:教授又有一個小問題>,<是一定要看懂solver.h跟solver.cpp才 01/14 01:19
2F:→ XDucka:能去控制sat做到一半放棄嗎@@ 01/14 01:20
3F:→ ric2k1:說實在的,如果對 SAT 沒有一點概念其實有點難改 01/14 01:26
4F:→ ric2k1:不過有概念之後其實也就不難改了... 01/14 01:27
5F:→ ric2k1:倒也不用完全看懂 Solver.cpp,但對於 SAT 的演算法要懂 01/14 01:28
6F:推 XDucka:再問一個小問題>,< 每個fec group的第一個 都不要有!嗎 01/14 13:34
7F:推 yuting1105:yes 01/14 13:48
8F:推 yuting1105:不過cirg <num>的時候,有沒有!是看該ID的simVal和<num> 01/14 15:43
9F:→ yuting1105:的simVal是否反向 01/14 15:43
10F:推 XDucka:對欸=.= 01/14 16:01