close

Compiler 在編譯程式時常常會對代碼進行優化的動作 , 

所謂優化的動作指的就是....舉個例子:

int i = 2;

int a = i;

int b = i;

當我們想要指定i給a時 , 此時有可能會從memory中讀取 , 

但是若在指定給b這區段時 , 程式則可能會從register中讀取 , (因為i之前有讀過 , 由register中讀取可以增加速度)

而這就是compile優化所產生的結果.

 

但有時 i 這個變數可能會具有一些揮發性的特性 , 例如他可能會隨著時間而變化.

所以若compile進行優化動作 , 而造成程式一直從register中讀取 , 

將會導致所有變數的值都相同.

所以照理說對於這樣的變數 , 我們會希望都能夠從他所在的memory address進行讀取,

而這就是volatve的功用.

for example:

volative int i = 2;

int a = i;

int b = i;

arrow
arrow
    全站熱搜
    創作者介紹
    創作者 JerryCheng 的頭像
    JerryCheng

    KwCheng's blog

    JerryCheng 發表在 痞客邦 留言(0) 人氣()