volatile的深入理解--【sky原創】,volatile深入理解
volatile
所有定義的變量都是在內存上面的,
例如:
int i = 10;
int j = i;
int k = i;
i = 10; 是初始化的變量,存放在數據段,未初始化的變量存放在bss段
也就是i為左值時存放在內存上
j = i 此時 i 為右值,那麼i的值在寄存器上,j就從寄存器上面取值
由於編譯器的原因可能導致編譯過程中寄存器上的值會改變
,那麼 k 取到的值就不是我們想要的了
如果加了volatile int k = i ;
那麼k每次就從內存上取值,保證了取值的正確性
新浪博客:http://blog.sina.com.cn/u/2049150530
csdn博客:http://blog.csdn.net/u011749143
博客園:http://www.cnblogs.com/sky-heaven/
新浪微博:張昺華--sky
知乎:http://www.zhihu.com/people/zhang-bing-hua