gpt4 book ai didi

调用 std::vector::clear 时 c++ 崩溃

转载 作者:塔克拉玛干 更新时间:2023-11-03 07:58:40 39 4
gpt4 key购买 nike

我有一个 std::vector<Pointer>其中 pointer 与 Boost 的 intrusive ptr 非常相似。有一些差异,但该系统在几个月内运行良好,我怀疑它是否存在任何缺陷。该 vector 包含约 30 个接口(interface)的列表,每个元素都有一个相当复杂的对象的实现。崩溃发生如下:

v.clear() // -> CRASH

奇怪的是,如果以任何其他方式清除 vector ,则不会发生崩溃;例如,以下代码不会崩溃。

while(v.size()) v.pop_back();
or
while(v.size()) v.erase(v.begin());

如果我使用标志“/RTCsu”和“/RTCc”进行编译,它也不会崩溃。如果我调试所有项目的发布正确发生,它甚至会成功退出清除函数,但是如果在清除之后我确实“进入”它会再次进入清除函数并在调用函数“迭代器”时崩溃结束()”

这是怎么回事?由于调试器和应用程序验证器未能提供任何相关信息,我应该检查内存的哪一部分是否损坏?以前有人偶然发现过这个问题吗?

最佳答案

那个智能指针有复制构造函数和赋值运算符吗? STL 容器存储所包含项目的拷贝,如果您的智能指针有问题,可能会导致您描述的问题。

关于调用 std::vector::clear 时 c++ 崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13605543/

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