当我使用Visual Studio 2015进行编码时,我无法在“调试模式”下调试和运行我的程序,编译说“调试断言失败,迭代器+偏移超出范围”,但是,我的程序可以成功运行发布模式,也可以在其他轻量级ide(code :: blocks)中运行,原因是什么?
答案 0 :(得分:5)
代码的行为是未定义。
您显然正在尝试索引超出其边界的数组(或相关容器)。 C ++通常不会对此进行任何运行时检查;程序员的工作就是确保不会发生这种情况。
您的调试版本有助于引起您的注意。
未定义的行为在发布版本中表现得不同。
修正断言!
答案 1 :(得分:2)
你试图在迭代器上超越end()。您在发布模式下不会收到错误,因为在发布模式下禁用了检查此问题的断言语句。