[英]How to deallocate an element in a vector of pointers?
所以我有一個像這樣的指針向量:
vector<Example*> ve;
我用這樣的指針填充這個向量
Example* e = new Example();
ve.push_back(e)
但是當我想刪除它們時,我如何確保它們被取消分配? 這夠了嗎?
ve.erase(ve.begin() + 1)
delete ve[1]
當然,你必須反過來這樣做:
delete ve[1];
ve.erase(ve.begin() + 1);
但是,在表達所有權時,最好使用智能指針(例如std::unique_ptr
)而不是原始指針。
您必須在刪除向量之前刪除指針:
for (vector<Example *>::iterator it = vec.begin(); it != vec.end(); it++) {
delete *it;
}
vec.clear();
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.