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 , 直接去变量真实地址读写数据,确保数据的正确性,结果正确

相关推荐
a诠释淡然几秒前
C++模板元编程—现代C++的黑魔法
开发语言·c++
汉克老师几秒前
GESP2026年3月认证C++六级真题与解析(单选题1-8)
c++·多态··构造函数·循环队列·bst·gesp6级
charlie1145141918 分钟前
现代C++工程:constexpr 基础:编译期求值的艺术
开发语言·c++
MemoriKu12 分钟前
Flutter 相册 APP 视频模态稳定化实战:从视频抽帧、Embedding 元数据到 Android 真机启动修复
android·开发语言·前端·flutter·架构·音视频·embedding
小欣加油14 分钟前
leetcode121买卖股票的最佳时机
数据结构·c++·算法·leetcode·职场和发展
SilentSamsara16 分钟前
特征工程系统方法论:编码、分箱、交互特征与特征选择
开发语言·人工智能·python·机器学习·青少年编程·信息可视化·pandas
morning_judger18 分钟前
Agent开发系列(十)-知识库建设(架构总览)
开发语言·人工智能
ch.ju21 分钟前
Java程序设计(第3版)第四章——继承的特点
java·开发语言
geovindu23 分钟前
python:Coroutines Pattern
开发语言·python·设计模式·协程模式
A.说学逗唱的Coke25 分钟前
【运维专题】playbooks保姆级使用指南
运维·开发语言·python