volatile的深入理解--【sky原创】

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

posted @ 2014-12-03 16:51  Sky&Zhang  阅读(423)  评论(0编辑  收藏  举报