c++ - volatile 成员不能被成员函数访问

标签 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 时,它​​会再次工作。那么为什么 volatile 是个问题?

最佳答案

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

所以用volatile vector调用它是非法的。

顺便说一句,volatile 不是多线程的神奇关键字。
您可以使用 mutex 来保护对您的 vector 的访问。

关于c++ - volatile 成员不能被成员函数访问,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21850124/

相关文章:

c++ - 为什么这个对象没有按值复制

java - Java中最简单易懂的volatile关键字示例

Java volatile 数组?

java - 单例中volatile的使用(Bill Pughs Solution)

c++ - 为 Boost.Python 包含带有 Bjam 的系统库

c++ - 如何在没有持久索引损坏/重复的情况下使用 beginMoveRows 进行排序?

c++ - Clang-CL 警告 strnicmp 已弃用,请使用符合 ISO C 和 C++ 的名称 _strnicmp

ios - 一旦与 Xcode 断开连接,应用程序将无法运行

c# - 尝试打开时 Visual Studio 崩溃

Android 模拟器导致 linux 崩溃并出现错误?