我正在从 Visual Studio 2008 -> 2010 转换,在评估 std::set 指针上的查找时,我在代码中遇到了一个奇怪的错误。
我知道这个版本带来了一个变化,其中 set::iterator 与 set::const_iterator 具有相同的类型,以带来与标准的一些兼容性。但我不明白为什么这部分以前有效的代码现在会导致崩溃?
void checkStop(Stop* stop)
{
set<Stop*> m_mustFindStops;
if (m_mustFindStops.find(stop) != m_mustFindStops.end()) // this line crashes for some reason??
{
// do some stuff
}
}
PS m_mustFindStops 崩溃时为空。
编辑:感谢您的快速回复......我也无法用一个简单的案例来重现它 - 这可能不是集合本身的问题。我认为堆损坏可能是罪魁祸首 - 我只是希望我知道为什么更改编译器会突然导致相同代码和相同输入数据的损坏。