6

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

vector<Example*> ve;

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

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

但是当我想删除它们时,我如何确保它们被释放?这够了吗?

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

2 回答 2

8

当然,你必须反过来做:

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

std::unique_ptr但是,在表达所有权时,使用智能指针(例如)而不是原始指针要好得多。

于 2013-05-14T12:03:41.467 回答
1

您必须在擦除矢量之前删除指针:

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

vec.clear();
于 2013-05-14T12:04:29.890 回答