在Visual C++中,“volatile”的MSDN文档指出写入具有“释放语义”,并且读取具有“获取语义”,此外还确保读取始终从内存中读取,并且写入始终相应写入。Visual C++挥发性
“volatile”的C规范包括第二部分(不要疯狂优化),但不包括第一部分(内存围栏)。
是否有任何方式在Visual C++获得“C”易失性行为,没有内存围栏?
我想强制一个变量总是在堆栈中,在一个固定的位置,但我不想在每个分配上都占用内存栏的开销。
是否有任何简单的方法来做到这一点与Visual C++源?
第一部分不是标准C++行为,我认为。不过,我不确定。 – Nawaz
“我想迫使一个变量总是在堆栈中,在一个固定的位置”,而volatile将如何帮助它? FWIW,变量总是*在固定点。 @Nawaz:不,第一部分不是标准。 –
@Fernades局部变量并不总是在一个固定的位置。取决于PC的位置,局部变量可以被消除,或者它们的地址在不同的地方。优化器可以做很多疯狂的事情。我想压制这些优化。要做到这一点的方法是使用“易失性”。但是,我不希望Visual C++引入的非标准内存围栏编辑为 –