解释 C/C++ 中的 volatile 关键字 | 示例
最编程
2024-03-18 12:33:42
...
#include <stdio.h>
void main()
{
int i = 10;
int a = i;
printf("i = %d", a);
// 下面汇编语句的作用就是改变内存中 i 的值
// 但是又不让编译器知道
__asm {
mov dword ptr [ebp-4], 20h
}
int b = i;
printf("i = %d", b);
}
然后,在 Debug 版本模式运行程序,输出结果如下:
i = 10 i = 32
然后,在 Release 版本模式运行程序,输出结果如下:
i = 10 i = 10
输出的结果明显表明,Release 模式下,编译器对代码进行了优化,第二次没有输出正确的 i 值。下面,我们把 i 的声明加上 volatile 关键字,看看有什么变化:
上一篇: Android 应用程序中的 OOM 问题分析和解决方案
下一篇: 10.1 电话管理器
推荐阅读
-
看看我是如何闯入钓鱼网站的巢穴并摧毁服务器的。
-
这波操作看着麻木!十亿行数据,从 71 秒到 1.7 秒的优化之路。
-
关于微前端(阿里乾坤)的事--上线一个 "微前端 "逼走两个90后!
-
三个背得滚瓜烂熟的八股文,被变成两个情景题后,打了我的脸。-第一个场景
-
你所不知道的 vue:使用 runWithContext 在非设置期间使用对象
-
你玩过这些用 Python 编写的超棒程序/脚本吗?
-
那些令人发指的 PCB 美图作品!
-
SAP 成都研究院 C4C 璀璨左使:SAP 云客户使用 SAP UI5 的独特功能
-
SAP 成都研究院 C4C 璀璨左使:SAP 云客户使用 SAP UI5 的独特功能
-
初见杨怡,误终身--写给孙兴版的杨怡。