我有一个非常小的功能,似乎在我的一些线程中导致分段错误,但是我的代码工作得很好,如果我为这个函数的调用添加一个锁定保护:
int getROCIndexByName(const std::string& t_name)
{
std::smatch match;
std::regex_match(t_name, match, std::regex(R"(.*ROC ?(\d+))"));
return std::stoi(match[1].str()) - 1;
}
这可能在某种程度上是线程不安全的,或者我只是幸运地阻止我的代码通过添加警卫围绕这个?谢谢!
答案 0 :(得分:0)
在访问匹配[1]之前,您应该检查确实存在匹配。