作者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