作者JUSer (憲憲)
看板EE_DSnP
標題[問題] free vector memory usage
時間Sat Dec 26 09:50:46 2009
HW6裡的data member vector<CirGate*>這個data type 在 clear時
好像不會free他use的memory 所以使的我的code memory usage一直增加
我有上網查過資料 vector其實是一種dynamic array
就跟我們在hw5裡面寫得array一樣在clear時不會free memory
但我在想這樣子是不是不好? 萬一我array寫很大每次重跑都不release
記憶體用量不是會十分巨大?
所以我找了些方式 但試過都沒有用
1.最常看到的方式是用一個空vector去跟他swap 但想說換完的那個local vector 在離開
他的scope時還是會呼叫destructor去清空 可是記憶體還是不會被release?
2.直接將 _piList _poList _totalList等data member宣告成pointer type,
clear時直接delete掉memory space 在new一個空的給data member指
3.用reserve()這個fuction將capacity設為0
以上方式全部失敗...
雖然說這樣子對這個小program好像不成大礙
但我很想知道解決的方式 謝謝回答的大家:)
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 140.112.4.200
1F:推 ric2k1:我 (ref prog) 是用 1. 傳 vector& 進去再與空 vector swap 12/26 09:53
2F:推 timrau:標準做法是 vector<CirGate*>(array).swap(array); 沒錯 12/26 10:49
3F:→ timrau:啊 搞錯用途 是要清空不是要清掉多餘的capacity..... 12/26 10:50
4F:→ timrau:要清空就寫一行文 vector<CirGate*>().swap(array); 12/26 11:25