在Visual C++中,「volatile」的MSDN文檔指出寫入具有「釋放語義」,並且讀取具有「獲取語義」,此外還確保讀取始終從內存中讀取,並且寫入始終相應寫入。Visual C++揮發性
「volatile」的C規範包括第二部分(不要瘋狂優化),但不包括第一部分(內存圍欄)。
是否有任何方式在Visual C++獲得「C」易失性行爲,沒有內存圍欄?
我想強制一個變量總是在堆棧中,在一個固定的位置,但我不想在每個分配上都佔用內存欄的開銷。
是否有任何簡單的方法來做到這一點與Visual C++源?
第一部分不是標準C++行爲,我認爲。不過,我不確定。 – Nawaz
「我想迫使一個變量總是在堆棧中,在一個固定的位置」,而volatile將如何幫助它? FWIW,變量總是*在固定點。 @Nawaz:不,第一部分不是標準。 –
@Fernades局部變量並不總是在一個固定的位置。取決於PC的位置,局部變量可以被消除,或者它們的地址在不同的地方。優化器可以做很多瘋狂的事情。我想壓制這些優化。要做到這一點的方法是使用「易失性」。但是,我不希望Visual C++引入的非標準內存圍欄編輯爲 –