CPP中volatile关键字介绍
简介
volatile 意为:不稳定的,易变的。该关键字用于提醒编译器它所修饰的变量的值会时刻改变。通常我们不会经常使用该关键字修饰变量,那么这个时候为了优化IO性能,程序可能会从该变量的寄存器中取值而不会从它的内存地址取值,因为访问寄存器的性能快过ram,但如果数据会频繁变化,寄存器中的值和该变量的内存地址中的值就并不一定完全相同,这样就会导致数据不一致,容易出现问题,且难以发现。
用法
volatile <data-type> <var-name>;
volatile int a = 0;
示例
比如我想用整形变量定义一个flag,而该flag会一直变化,当达到某个条件会断开循环,如果不加volatile关键字,就容易导致数据不一致,循环可能不会像预期的那样运行
1 |
|
1 |
|
通常Debug模式和Release模式中,使用和不使用volatile关键字程序运行状态可能会有所不一样,因为不同模式编译器编译优化会不一样,Release模式会优化代码,运行时就有可能导致会从寄存器中读取数据,那么就会产生问题出来。
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 🏳️⚧️茶茶の博客🏳️⚧️!