Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/grails/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Visual c++ VisualC+;中的绕过列表迭代器解引用错误+;2010_Visual C++_List_Iterator - Fatal编程技术网

Visual c++ VisualC+;中的绕过列表迭代器解引用错误+;2010

Visual c++ VisualC+;中的绕过列表迭代器解引用错误+;2010,visual-c++,list,iterator,Visual C++,List,Iterator,当我取消引用一个列表迭代器时,我得到一个错误,说迭代器不能被取消引用。但是,当我构建发布版本时,这种情况不会发生,而只发生在调试版本上 有什么方法可以绕过此错误吗?您不想绕过此检查。它告诉你你的代码有问题,只在发布模式下才会消失。实际发生的是,你得到的是未定义的行为,它似乎按照你想要的方式工作。事实上,它将在将来的某个不可预测的时刻失败,这将给您带来更多的痛苦,并可能导致数小时的调试工作。发布一段最小的、可编译的代码来演示该问题。取消对迭代器的引用不应导致错误。错误可能来自Visual C++的

当我取消引用一个列表迭代器时,我得到一个错误,说迭代器不能被取消引用。但是,当我构建发布版本时,这种情况不会发生,而只发生在调试版本上


有什么方法可以绕过此错误吗?

您不想绕过此检查。它告诉你你的代码有问题,只在发布模式下才会消失。实际发生的是,你得到的是未定义的行为,它似乎按照你想要的方式工作。事实上,它将在将来的某个不可预测的时刻失败,这将给您带来更多的痛苦,并可能导致数小时的调试工作。

发布一段最小的、可编译的代码来演示该问题。取消对迭代器的引用不应导致错误。错误可能来自Visual C++的库调试模式,该模式比其他一些库放入更多断言。您的代码中一定有不正确的地方触发了错误。我试图通过以下方式比较同一列表中的两个元素:如果((*it)==(*it2)),那么它们可能不是列表中的元素,可能是列表的end()迭代器?这是您在调试模式下出现解引用错误的原因。有额外的检查,以确保您没有取消引用无效迭代器。它是99.99999999999%,可能是代码中的错误,而不是编译器的错误。