我知道BSS段存儲未初始化的全局和靜態變量並將它們初始化爲零。但是如果全局/靜態變量被初始化,而我的第二個問題是我讀了BSS段沒有消耗內存,那麼它在那裏存儲這些變量呢?謝謝BSS段存儲什麼?
4
A
回答
7
您可能讀到BSS段不會消耗磁盤上的可執行文件中的空間。當可執行程序加載時,BSS段肯定是確實消耗內存中的空間。 OS加載器分配空間並初始化爲零。
2
如果初始化,全局/靜態變量存儲在.DATA段中。當您在.DATA段中聲明數據時,您將爲這些數據提供值,以便將其存儲爲可執行文件的一部分。
另一方面,由於您不需要知道這些值是什麼,因此您只需聲明.BSS需要多少數據。因此,如果您的程序聲明2 GB未初始化的內存,則2 GB不會影響可執行文件的大小,直到加載後纔會看到它。
相關問題
- 1. bss段的效用是什麼?
- 2. 擁有.bss段的優點是什麼?
- 3. Segfault訪問BSS存儲器
- 4. 存儲靜態變量(數據段或堆或BSS)在哪裏?
- 5. .bss中的ELF重定位是什麼,但相對於.bss,是什麼意思?
- 6. 將BSS映射到虛擬內存段0的含義是什麼?
- 7. 就BSS,DATA,TEXT段而言,a.out文件包含什麼內容?
- 8. 什麼所有本地變量轉到數據/ BSS段?
- 9. 什麼是圖像的bss部分?
- 10. sampler2d存儲什麼?
- 11. 什麼是存儲
- 12. 「.bss」命令在MSP430彙編代碼中做了什麼?例如,「.bss beep_cnt,2」與變量beep_cnt2做什麼?
- 13. 什麼可以存儲在DOM存儲?
- 14. 爲什麼Django _meta將字段和many_to_many字段分開存儲?
- 15. 爲什麼我的緩存片段沒有存儲?
- 16. cookies中存儲了什麼
- 17. 什麼是存儲綁定
- 18. 什麼是VCS存儲庫?
- 19. 什麼叫會話存儲?
- 20. ARM GNU GCC試圖零出.bss段
- 21. 86 ASM的Linux - 使用.bss段
- 22. 什麼字段類型來存儲Facebook消息?
- 23. 什麼是存儲片段值的合適方法?
- 24. 什麼字段類型來存儲Facebook令牌?
- 25. 什麼是適合存儲動態字段的表結構?
- 26. 爲什麼日期字段沒有存儲到數據庫中
- 27. 段,卷和分區有什麼區別?(在存儲域中)
- 28. 什麼在谷歌App Engine的數據存儲鍵字段
- 29. 爲什麼在非存儲片段中調用OncreateView?
- 30. 什麼是用於存儲JSON對象的Solr字段類型?
嗨格雷格,謝謝你的回覆。如果全局/靜態變量被初始化,那麼存儲在哪裏呢? – hue 2011-04-25 06:35:22
如果初始化很簡單(就像一個數字),那麼它通常存儲在可執行文件(數據段)中。如果初始化更復雜(例如C++字符串),則在程序啓動時運行代碼以初始化該值。 – 2011-04-25 06:36:41
所以我還有一個問題,那麼堆是在哪裏存儲的。它是數據部分的一部分嗎? – hue 2011-04-25 07:02:44