gpt4 book ai didi

c++ - 如何删除 vector 的多个添加指针?

转载 作者:行者123 更新时间:2023-11-30 01:29:02 25 4
gpt4 key购买 nike

我有一个带有一些(在其他类对象中)多个添加对象的 vector

class Foo {
...
vector<Bar*> v;
Bar* b = new Bar();
v.push_back(b);
v.push_back(b);
...
}

在 Foo 的析构函数中我这样做

for (vector<Bar*>::iterator it = v.begin(); it != v.end(); ++it)
delete *it;

这会导致第二次迭代出现异常,因为对象已经被释放:“读取位置 0xfeeefee2 的访问冲突。”

我该如何解决这个问题?

最佳答案

使用shared_ptr。您可以在 C++0x、TR1 或 Boost 中找到它。 shared_ptr 知道有多少指针仍然指向一个对象,只有当它是最后一个时才删除它。

关于c++ - 如何删除 vector 的多个添加指针?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6572679/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com