volatile关键字是什么意思

Posted yfish

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了volatile关键字是什么意思相关的知识,希望对你有一定的参考价值。

我写了一段简单的对比代码并分别用vs2017以release方式编译然后用IDA观察汇编代码,如下图所示:

代码1

int a=5;

printf("%d",a)

 

代码2

volatile int a =5;

printf("%d",a);

技术分享图片

 左边是代码1的汇编代码,右边是代码2的汇编代码。

左边由于 编译器发现a的值是5,然后printf里面有一个a,然后根据等量代换直接就把a的值设置为5了。其实这是一种优化手段,能执行一句代码为什么要执行两句代码呢,是吧。

右边由于给a加上了volatile关键字,就是告诉编译器不要把这个变量优化掉了,该从哪里取数据就从哪里取数据。由于5这个数是存放在了[ebp-4]这个地址开始的内存单元处,所以传递参数的时候也是直接把这个地址的数据给传递进去了。

 

所以volatile关键字的意思就是 ,教练,请不要优化我啊。

 

以上是关于volatile关键字是什么意思的主要内容,如果未能解决你的问题,请参考以下文章

static volatile a b=c;

“volatile”这个关键字

java关键字 volatile的作用及使用说明

volatile关键字是不是能保证线程安全

Volatile关键字

你真的了解 volatile 关键字吗?