[問題] 想請教一下 vector 的生命期

看板C_and_CPP作者 (星空下的鮪魚)時間15年前 (2009/02/21 07:26), 編輯推噓2(207)
留言9則, 4人參與, 最新討論串1/4 (看更多)
如果宣告了一個 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

02/21 08:29, , 1F
你可以自己寫個class type然後再覆寫destructor觀察
02/21 08:29, 1F

02/21 08:30, , 2F
member function中就是function結束後被回收
02/21 08:30, 2F

02/21 08:30, , 3F
member variable就是object被回收的時候回收
02/21 08:30, 3F

02/21 11:18, , 4F
別在 vector 中放 TYPE*,除非你真的知道這樣做的代價
02/21 11:18, 4F

02/21 11:19, , 5F
真要放指標,可以用 smart_ptr
02/21 11:19, 5F

02/22 22:07, , 6F
咦?不放TYPE *的話要放哪一種呢?
02/22 22:07, 6F

02/22 22:40, , 7F
如上所說 <type> 會再object回收時跟著回收
02/22 22:40, 7F

02/22 22:41, , 8F
且<type>的物件存取方式遠比<type*>要快
02/22 22:41, 8F

02/22 22:41, , 9F
vector<type>所裝的type物件是在heap
02/22 22:41, 9F
文章代碼(AID): #19dpmWJp (C_and_CPP)
討論串 (同標題文章)
文章代碼(AID): #19dpmWJp (C_and_CPP)