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

相关推荐
思麟呀几秒前
C++14概述与三大核心语法改进
开发语言·c++
shushangyun_4 分钟前
批发商城系统源码多少钱?2026最新报价一览
java·开发语言·人工智能·spring·spring cloud
影视飓风TIM7 分钟前
从C++引用到类封装:底层视角拆解核心语法与面试考点
java·开发语言
Lhan.zzZ12 分钟前
Qt Quick 嵌套 Dialog 与 ComboBox 层级混乱问题解决
c++·qt
江畔柳前堤13 分钟前
github实战指南03-Pull Request 全流程实战
开发语言·人工智能·python·深度学习·github·word
森G14 分钟前
67、Qt 多媒体框架概述---------多媒体
开发语言·qt
Irissgwe18 分钟前
AVL树详解
数据结构·c++·算法·二叉树·c·二叉搜索树·avl
葛兰岱尔24 分钟前
从 SolidWorks 到 Three.js,从 Inventor 到 Unity——制造业CAD模型“几何-语义一体化“转换,不再是天方夜谭!
开发语言·javascript·unity
剑锋所指,所向披靡!25 分钟前
进程间通信IPC
c++
小小晓.28 分钟前
零基础C++小白突破
开发语言·c++