C++ :我有一个vector<bool>,没有线程会向任何索引写入 false 。我还应该使用锁吗?我认为它不会导致竞争条件,因为所有线程都在写入相同的 value 。多个线程访问的函数如下所示:
void setVal(int index)
{
if (boolvec[index] == false)
boolvec[index] = true;
}
Run Code Online (Sandbox Code Playgroud) 以下代码编译良好,因为 g++ 允许它,但它会导致未定义的行为吗?或者我的代码可以正常工作?如果在使用时没有产生错误,那么 C++ 标准不允许可变长度数组是什么意思?
#include <iostream>
using namespace std;
int main()
{
int x;
cin >> x;
char abc[x];
cout << sizeof(abc) << "\n";
return 0;
}
Run Code Online (Sandbox Code Playgroud)