为什么在VC ++ 2013调试模式下跟随正则表达式代码崩溃

时间:2016-04-15 06:30:52

标签: c++ regex visual-c++

为什么以下代码在VC ++调试模式下崩溃,但在发布模式下工作

enter image description here

footerView

1 个答案:

答案 0 :(得分:2)

在GCC和Clang中这段代码只是doesn't compile,以及VS2015。原因是由于C ++ 14 std::regex_search被禁止将临时字符串作为参数,因为否则它会用无效的迭代器填充匹配结果。

VS2013显然不符合C ++ 14,因此您可以进行无效调用。所以M[0]包含无效的迭代器,并且尝试在其上调用str()会调用未定义的行为。

在Debug中你很幸运,并在字符串迭代器代码中捕获一些断言,但它甚至可能不是这样。