如何在指针向量中释放元素?

时间:2013-05-14 12:01:58

标签: c++ pointers vector memory-management

所以我有一个像这样的指针向量:

vector<Example*> ve;

我用这样的指针填充这个向量

Example* e = new Example();
ve.push_back(e)

但是当我想删除它们时,我如何确保它们被取消分配? 这够了吗?

ve.erase(ve.begin() + 1)
delete ve[1]

2 个答案:

答案 0 :(得分:8)

当然,你必须反过来这样做:

delete ve[1];
ve.erase(ve.begin() + 1);

但是,在表达所有权时,使用智能指针(例如std::unique_ptr)而不是原始指针更为可取。

答案 1 :(得分:1)

你必须删除之前删除指针

for (vector<Example *>::iterator it = vec.begin(); it != vec.end(); it++) {
    delete *it;
}

vec.clear();