1. ホーム
  2. c++

[解決済み] C++におけるvolatileとmutableの比較

2023-03-08 04:48:55

質問

volatileとmutableの違いについて質問です。どちらも「変更される可能性がある」という意味だと気づきました。他は何ですか?同じものなのでしょうか?何が違うのでしょうか?それらはどこに適用されるのですか?なぜ、この2つの考え方が提案されたのか?どのように使い分ければいいのでしょうか?

ありがとうございました。

どのように解決するのですか?

A mutable を通してアクセスされたオブジェクトでも、フィールドを変更することができます。 const ポインタや参照、あるいは const オブジェクトで、コンパイラはそれをR/Oメモリに隠さないことを認識します。 A volatile の位置はコンパイラが知らないコード(例えばカーネルレベルのドライバ)によって変更される可能性があるので、コンパイラは、例えば、値が最後にそのレジスタにロードされてから "could not have changed" という無効な仮定でその値のレジスタ割り当てを最適化しないように知っています。 非常に異なる種類の無効な最適化を阻止するために、非常に異なる種類の情報がコンパイラーに与えられます。