可能重複:
Where are static variables stored (in C/C++)?在內存中靜態變量的存儲位置?
我想知道全局變量和靜態變量都存儲在C/C++。只要當函數處於活動狀態時局部變量存儲在堆棧中,我們也會從堆中請求內存,但我不知道靜態變量和全局變量。任何人都可以點亮它。
可能重複:
Where are static variables stored (in C/C++)?在內存中靜態變量的存儲位置?
我想知道全局變量和靜態變量都存儲在C/C++。只要當函數處於活動狀態時局部變量存儲在堆棧中,我們也會從堆中請求內存,但我不知道靜態變量和全局變量。任何人都可以點亮它。
加載可執行文件時,操作系統爲程序的全局數據分配內存。通常它們保存在可執行文件的.data
和.bss
部分。
他們生活在全球記憶中,與其他兩個地區分開。如果它們的確切內容在編譯時已知,則它們將作爲程序或庫的一部分發布並存在於數據段中。
注意:我一直認爲它與文本段中的代碼一起居住,但是一個簡短的尋找清楚地表明數據段與文本段是分開的,儘管它們通常是連續的。
它們存儲在數據段中,該數據段通常(總是?)固定大小,並且與可執行文件「刻錄」不同,而不像在運行時從操作系統分配的堆。數據段通常分爲初始化和未初始化的數據段(分別是.data和.bss)。
維基百科有更多信息here