作者aecho (星空下的鮪魚)
看板C_and_CPP
標題[問題] 想請教一下 vector 的生命期
時間Sat Feb 21 07:26:22 2009
如果宣告了一個 vector 的陣列,他的生命期會是到哪時候?
vector裡面的東西是配置在heap區還是stack區呢?
上網google了一下文章,有談到要掌握好裡面的生命期的話
可以用宣告成vector<TYPE *> 而不是vector<TYPE> 的型式
然後把new出來或是malloc出來的pointer放到vector裡面
最後再自己決定delete或free掉的時機
那如果是用vector<TYPE> 的話
他的生命期會是到哪時候呢?
例如宣告在class 的member function,或是class的member variable的話
哪個時候vector<TYPE>裡存放的東西會消失?
--
「當我真心追尋著我的夢想時,每一天都是繽紛的。
因為我知道每一個小時都是在實現夢想的一部分,
當我真實地在追尋著時,一路上我都會發現從未想像過的東西,
如果當初我沒有勇氣去嘗試看來幾乎不可能的事,如今我就還只是個牧羊人而已。」
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 218.160.238.162
1F:推 realmojo:你可以自己寫個class type然後再覆寫destructor觀察 02/21 08:29
2F:→ realmojo:member function中就是function結束後被回收 02/21 08:30
3F:→ realmojo:member variable就是object被回收的時候回收 02/21 08:30
4F:推 littleshan:別在 vector 中放 TYPE*,除非你真的知道這樣做的代價 02/21 11:18
5F:→ littleshan:真要放指標,可以用 smart_ptr 02/21 11:19
6F:→ aecho:咦?不放TYPE *的話要放哪一種呢? 02/22 22:07
7F:→ sunneo:如上所說 <type> 會再object回收時跟著回收 02/22 22:40
8F:→ sunneo:且<type>的物件存取方式遠比<type*>要快 02/22 22:41
9F:→ sunneo:vector<type>所裝的type物件是在heap 02/22 22:41