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