成员函数无法访问volatile成员

时间:2014-02-18 09:59:30

标签: c++ crash volatile

以下代码崩溃了我的程序:

#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时,它会再次运行。那么为什么挥发性成为一个问题?

1 个答案:

答案 0 :(得分:2)

std::vector::clear()没有volatile限定符。

因此使用volatile向量调用它是非法的。

BTW,volatile不是多线程的神奇关键字 您可以使用mutex来保护对矢量的访问。