c++ - C++ 中的 volatile 与 mutable

标签 c++ volatile mutable

我对 volatile 和 mutable 之间的区别有疑问。我注意到这两者都意味着它可以改变。还有什么?它们是一样的吗?有什么不同?它们适用于什么地方?为什么提出这两个想法?如何以不同的方式使用它们?

非常感谢。

最佳答案

即使在通过 const 指针或引用访问的对象中,或在 const 对象中,也可以更改 mutable 字段,因此编译器知道不将其存储在 R/O 内存中。 volatile 位置是可以由编译器不知道的代码(例如某些内核级驱动程序)更改的位置,因此编译器知道不进行优化,例如在该值“不可能改变”的无效假设下对该值的寄存器分配,因为它最后一次加载到该寄存器中。向编译器提供非常不同类型的信息以阻止非常不同类型的无效优化。

关于c++ - C++ 中的 volatile 与 mutable,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2444695/

相关文章:

c# - 可变结构与类?

c++ - 在 c++/cli 中设置指向指针的指针

c - 什么时候需要在 ISR 中使用 volatile?

Java 不稳定的并发性

java - volatile 变量的更新值对其他线程不可见

list - 在 Kotlin 中,如何在迭代时修改列表的内容

c++ - 通过网络运行 Qt 应用程序

c++ - 尽管有足够的空间,CListCtrl 仍显示省略号(仅限 Win2008 和 Win7)

c++ - 模板错误

arrays - 奇怪的 ArrayBuffer 行为