我搜索了StackOverflow,但找不到這個問題的答案。在C++中釋放std :: vector指針的正確方法是什麼?
假設我有一個std::vector<Day *> vector_day
- 即 - 指向Day
對象的指針向量。現在我push_back
到vector_day
許多元素:
vector_day.push_back(new Day(12));
vector_day.push_back(new Day(99));
vector_day.push_back(new Day(71));
...
現在在某些時候我不再需要vector_day
。什麼是釋放內存的正確方法?
這一點,正確的方法:
for (std::vector<Day *>::iterator i = vector_day.begin(); i != vector_day.end(); ++i) {
delete *i;
}
這是否失效每個缺失載體?我很困擾。
可能http://stackoverflow.com/questions/3054567/right-way-to-deallocate-an-stdvector-object – 2010-07-27 15:07:56
RC愚弄的人 - 不是真的,這是完全不同的。 – bodacydo 2010-07-27 15:14:09
不要像這樣放入指針。如果在矢量中的東西與刪除它的地方之間引發異常,該怎麼辦?你會跳過它並泄漏。使用智能指針或指針容器,從不使用原始指針。 – GManNickG 2010-07-27 16:40:32