标签: c++ regex visual-c++
为什么以下代码在VC ++调试模式下崩溃,但在发布模式下工作
footerView
答案 0 :(得分:2)
在GCC和Clang中这段代码只是doesn't compile,以及VS2015。原因是由于C ++ 14 std::regex_search被禁止将临时字符串作为参数,因为否则它会用无效的迭代器填充匹配结果。
std::regex_search
VS2013显然不符合C ++ 14,因此您可以进行无效调用。所以M[0]包含无效的迭代器,并且尝试在其上调用str()会调用未定义的行为。
M[0]
str()
在Debug中你很幸运,并在字符串迭代器代码中捕获一些断言,但它甚至可能不是这样。