gpt4 book ai didi

c++ - std::set::insert 崩溃的原因

转载 作者:太空狗 更新时间:2023-10-29 21:27:38 46 4
gpt4 key购买 nike

我正在尝试在下面的“addToOurSet”方法中调试我们的程序崩溃(段错误)的问题:

class SomeClass {
// ( ... )
void addToOurSet(SomeOtherClass* obj) { ourSet.insert(obj); }
std::set<SomeOtherClass*> ourSet;
};

由于(除其他原因外,涉及的复杂性和大数据量,以及无法在调试版本中重现;上面的示例显然是高度简化的),崩溃很难重现。回溯显示崩溃发生在:

std::_Rb_tree<...>::insert_unique(SomeOtherClass* const&)

我的问题是:什么会导致 ourSet.insert(...) 方法崩溃?据我了解,插入的对象本身没有任何可能导致它的原因,因为它是一个指针。正确的?那么我是不是在看布景本身的问题?显然,如果 set 指针由于某种原因无效,调用可能会崩溃,但是例如对 set 的某些操作可能会导致它以这种方式无效(例如删除超出其末尾或禁止的内容)?

最佳答案

有几种可能性:

  1. set 本身无效(封闭的 SomeClass 实例已被删除,或者正在通过悬挂指针等访问)。
  2. 某处存在内存损坏。

我可能会从 valgrind 开始或类似的工具。

关于c++ - std::set::insert 崩溃的原因,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8806700/

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