我遇到了一个问题,我的程序在迭代一个集合时进行了coredumped,代码在下面,当集合的大小低于50000时,它运行正常,而当它的大小超过50000时它会失败(几乎我没有在for循环中做任何事情,但它仍然是coredumped。问题是什么?
set<CRoute *>::iterator it = route_list.begin();
for(; it != route_list.end(); ++it)
{
//Nothing TODO
}
答案 0 :(得分:0)
问题是什么?
根据您提供的数据,我们无法说出来。
有几个常见原因:
set
(例如,通过从多个线程访问它而没有正确锁定)std::set
的严格weak ordering requirements std::set
中留下了一个悬空指针,你的排序谓词使用悬空数据并在给定垃圾时崩溃。要弄清楚发生了什么,quit thinking and look例如通过在调试器中运行程序并完全理解在哪里正在进行coredump。