看板 EE_DSnP 關於我們 聯絡資訊
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呢@@? 今天下午原本用vector<vector<CirGate*>*> 但是把某些new出來的vector delete掉的時候 會出現許多種不同的segement fault 所以想說先跑出來再說 改成用vector<vector<CirGate*> > .... 結果跑小小電路的時候對是對了=.= 但是晚上測sim13發現不但跑超久 而且記憶體花了1G....(下定決心要重來...) 結果剛剛才被前年的文章雷到 早知道早點被雷>.< 看來明天還是回去用vector<vector<unsigned>*>來砍掉重練一次好了 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 111.241.132.193 ※ 編輯: XDucka 來自: 111.241.132.193 (01/13 01:26)
simpdanny:用typedef vector<CirGate*> GateList可增加可讀性唷XDD 01/13 01:46
yan12125:用valgrind就知道哪裡有memory leak啦 01/13 02:03
yan12125:我個人覺得memory leak永遠會出現在想不到的地方 01/13 02:04