程序中的各個分割槽中都存些什麼?

2021-10-08 13:19:05 字數 581 閱讀 6366

1、bss區

通常是指用來存放程式中未初始化的全域性變數的一塊記憶體區域。

2、資料段

通常是指用來存放程式中已初始化的全域性變數的一塊記憶體區域。

3、**段

通常是指用來存放程式執行**的一塊記憶體區域,在**段中,也有可能包含一些唯讀的常數變數,例如字串常量等。

在資料結構中的正文段包括**段和資料段

4、堆堆是用於存放程序執行中被動態分配的記憶體段,它的大小並不固定,可動態擴張或縮減。windows系統在該程序退出時由os釋放,linux則只在整個系統關閉時os才去釋放。

5、棧棧又稱堆疊,使用者存放程式臨時建立的區域性變數。在函式被呼叫時,其引數也會被壓入發起呼叫的程序棧中,並且待到呼叫結束後,函式的返回值也會被存放回棧中。由於棧的後進先出特點,所以棧特別方便用來儲存/恢復呼叫現場。

所以一般在刷oj時都建議把較大的陣列放在main()函式外,因為區域性變數是存放在棧區中的,若把大陣列存放為區域性變數,往往可能導致棧溢位。所以棧溢位不一定是遞迴呼叫太多,也可能是區域性變數太大,只要大小超過了限制,那麼就會產生棧溢位。

程序中為什麼會有同名的程序

在看乙個專案 時,發現在除錯時出現有同名的程序,比如說svshost.exe 現將查詢到的資料做個筆記。歡迎補充。詳細分析svshost.exe程序 其實svshost.exe是windows xp系統的乙個核心程序。svshost.exe不單單只出現在windows xp中,在使用nt核心的win...

WinForm中窗體的單例模式和單程序 存檔

winform中窗體的單例模式和單程序 窗體單例模式的實現 public static chatform newform null public static chatform getinstance else return newform 呼叫 chatform newform chatform....

Kafka中關於分割槽的一些理解

分割槽和主題 一般我們會在乙個topic下設定多個分割槽,這樣多個分割槽對應多個消費者,以此可以提高kafka的吞吐量,相當於處理訊息時達到了多執行緒並行執行的效果。分割槽和訊息 當生產者要向某個主題傳送訊息時,生產者會先將訊息序列化處理,然後根據topic,serializedkey,serial...