C++ volatile 关键字

C++ volatile (只有release下才会生效)

1、告诉编译器volatile修饰的变量不要进行指令顺序的优化,以保证代码编写者的真实意图;

cpp 复制代码
	int a = 0;
	int b = 10;
	int c = 100;
	int* p = &a;
	p = &b;
	p = &c;
	如果不加volatile修饰 p , 编译器可能不执行p = &a;	p = &b;这两行,直接执行 p=&c;

2、每次都要从变量的实际内存进行读写,不要从寄存器或者缓存读写数据,以保证数据的正确性;

代码示例

cpp 复制代码
#include <iostream>
using namespace std;
int main()
{
	//volatile int i = 10;
	int i = 10;
	int a = i;
	cout << a << endl;
	_asm {
		mov dword ptr[ebp-4] , 80
	}
	int b = i;
	cout << b << endl;
}

不带volatile , 直接从寄存器读写数据,导致数据不正确,得到结果都是10

带volatile , 直接去变量真实地址读写数据,确保数据的正确性,结果正确

相关推荐
念恒123066 小时前
Linux初识
linux·服务器·c++
ZK_H6 小时前
半导体工艺流程
java·c语言·开发语言·计算机网络·金融
旖-旎6 小时前
哈希表(存在重复元素)(3)
数据结构·c++·学习·算法·leetcode·散列表
计算机安禾6 小时前
【数据结构与算法】第39篇:图论(三):最小生成树——Prim算法与Kruskal算法
开发语言·数据结构·c++·算法·排序算法·图论·visual studio code
liliangcsdn7 小时前
sentence-transformer如何离线加载和使用模型
开发语言·前端·php
Crazy________7 小时前
4.10dockerfile构建镜像
java·开发语言
fish_xk7 小时前
c++内存管理
开发语言·c++·算法
独特的螺狮粉7 小时前
城市空气质量简易指数查询卡片:鸿蒙Flutter框架 实现的空气质量查询应用
开发语言·flutter·华为·架构·harmonyos
网域小星球7 小时前
C语言从0入门(八)|函数基础:封装、调用与参数传递精讲
c语言·开发语言
东宇科技7 小时前
如何使用js进行抠图。识别商品主体
开发语言·javascript·ecmascript