以下代码崩溃了我的程序:
#include <string>
#include <vector>
class test {
volatile std::vector<std::string> wtf;
public:
test() {}
void dope() { wtf.clear(); }
};
int main(){
(new test())->dope();
return 0;
}
我不知道为什么。当我删除volatile时,它会再次运行。那么为什么挥发性成为一个问题?
答案 0 :(得分:2)
std::vector::clear()
没有volatile
限定符。
因此使用volatile向量调用它是非法的。
BTW,volatile
不是多线程的神奇关键字
您可以使用mutex
来保护对矢量的访问。