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

相关推荐
catchadmin2 分钟前
PHP 在领域驱动(DDD)设计中的核心实践
开发语言·php
SilentSamsara17 分钟前
MLflow 实验追踪与模型注册:从实验到生产的可复现工作流
开发语言·人工智能·pytorch·python·青少年编程
dongf201923 分钟前
R语言朴素贝叶斯算法---iris数据集
开发语言·算法·数据分析·r语言
下班走回家26 分钟前
RAG 技术的进化:从朴素检索到 Agentic RAG
开发语言·人工智能·python
weixin_3077791327 分钟前
从“大海捞针”到“主动推理”:AI如何重塑云原生故障诊断的根因链
开发语言·人工智能·算法·自动化·原型模式
Johnstons27 分钟前
网页加载到一半卡住?视频看到关键处花屏?可能是丢包在作祟
开发语言·php·音视频·弱网测试·网络损伤
hoiii18728 分钟前
C# Txt/Excel/Access 导入导出工具
开发语言·c#·excel
代码中介商30 分钟前
C++ 智能指针完全指南(二):shared_ptr 深度详解
开发语言·c++
@Ma35 分钟前
Python 实现企业微信外部群主动消息发送及成功接入后如何避坑,避免风控封号
开发语言·python·企业微信
WWW652637 分钟前
代码随想录 打卡第五十四天
数据结构·c++·算法