c++ volatile关键字

Ref

cppreference - const vs volatile
C/C++中volatile关键字详解

volatile

以下来自谷歌翻译


image.png
int a=5;
int b=a;//第一次访问
//....
a=a+1;//第二次访问

当数据a被放到寄存器中去后,并且下次再次访问此数据期间,编译器没有察觉到数据发生变化,默认会进行优化,再次访问时直接从寄存器中取数据,而不是到内存中取数据,假如在两次显式访问此数据之间,存在编译器察觉不到的对a的修改,那么此修改不会反映到第二次数据访问,就会发生语义上的错误。

而如果在声明a时添加上volatile关键字,就告诉编译器每次访问数据都要到数据对应的内存位置去获取,不要进行寄存器优化。

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容