2017-07-11 109 views
0

在C中,全局變量存儲在數據段中。但是我不知道全局靜態變量會存儲在哪裏?靜態存儲在內存中的全局變量在哪裏?

static int num; //where will this variable get stored in memory? 
int main(){ 
    //code 

}  
+1

可能被優化,或存儲在一個非'靜態'版本將在同一個地方。細節取決於實現 –

+2

它們存儲在某個地方的內存中。大概。或者,如果編譯器設置爲優化未使用的變量,就像在這種情況下不使用'num',或者該值永遠不會改變,並且它可以作爲常量內聯一樣。爲什麼這是一個問題? – tadman

回答

4

這些變量可能存儲在不同的地方,標準沒有強制任何特定的存儲位置。根據具體情況,它們甚至可以存儲在只讀存儲器中(如果沒有修改)或者根本不存在(如果不使用)。甚至不需要該位置需要固定(或單個)。

標準對存儲的唯一要求是變量必須在函數調用中保持其值。

然而,一個正常的方法是將它們與全局變量放在一起。唯一不同於靜態變量的變量是符號的範圍。但請注意,這只是一種可能性,我可以想象其他合理的解決方案。

要得到更準確的答案,您需要知道您使用的平臺和工具鏈。

+0

「標準沒有要求任何特定的存儲位置」+1指出他所問的問題實際上不是C的主題,所以他要麼提出一個他不想問的問題,要麼表達錯誤。無論哪種方式,你只是回答了我所做的其他事情。 – dhein

0

它們存儲在內存的數據段中。

相關問題