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

相关推荐
码匠许师傅9 分钟前
【C++三方组件】OpenCV:计算机视觉的事实标准
c++
昂好的day10 分钟前
WPF 从零入门(上):WPF 是什么、XAML 语法、布局与样式全解
开发语言·c#·wpf
飞浪纪元[FWC–FE]13 分钟前
Qt 构建排错实录:从 MSB 1009 到生成器选型
开发语言·数据库·qt
fly-iot14 分钟前
【FDE知识库】(1):AI 编程时代开发语言选型分析,云使用go,企业用java,算法python,底层c
开发语言·人工智能·golang
云边有个稻草人14 分钟前
Prometheus Pushgateway教程:离线任务指标上报、Shell与Python示例、远程访问
开发语言·python·prometheus
暴走约伯17 分钟前
【VFX工具链源码拆解 01】总体架构:大型项目特效流程的程序化落地
开发语言·经验分享·3d·unity·架构·游戏引擎
C^h9 小时前
c++ string
开发语言·c++
raindayinrain10 小时前
c++高性能--原子操作,无锁编程,操作顺序
开发语言·c++·性能优化
学逆向的10 小时前
C++ 合并命名空间
开发语言·c++·网络安全
Zhao-Jichao10 小时前
VS2026 打包 C++ 程序生成 EXE,借助 Installer Project 扩展工具
开发语言·c++