gpt4 book ai didi

c++ - myVector.erase(myObject) 是否在 myObject 上调用 delete?

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:05:38 28 4
gpt4 key购买 nike

类似于this question但使用对象而不是指针。

如果我有如下代码

Foo f;
vector<Foo> vect;
vect.push_back(f);
vect.erase(vect.begin());

我的对象去了哪里?是否调用了删除?如果其他人持有指向它的指针怎么办?这是内存泄漏吗?

最佳答案

push_back 在 vector 中存储 f拷贝,然后erase 销毁它。 f 本身不受此影响。

当您删除时, vector 中元素的所有指针、引用和迭代器都将失效。在 erase 之后使用它们访问元素会产生未定义的行为。

关于c++ - myVector.erase(myObject) 是否在 myObject 上调用 delete?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3290780/

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