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;
全站熱搜