5 Linux應用程式位址布局

2022-08-22 20:45:11 字數 3195 閱讀 3275

5. linux應用程式位址布局

程式構成:

在學習linux應用程式開發時,經常會遇到如下概念:**段、資料段、bss段(block started by symbol,又名:未初始化資料段) 、堆(heap)和棧(stack)。而這些部分也是構成linux應用程式的重要組成部分。

記憶體布局:

當linux應用程式在記憶體中執行的時候,以上組成部分在記憶體中布局:

從低位址到高位址分別為:**段、資料段、bss段、堆、棧。

堆向高記憶體位址生長。

棧向低記憶體位址生長。

下面測試下面的程式:

檢視系統的執行緒:

**段:**,全域性常量(const)、字串常量。

資料段:全域性變數(初始化以及未初始化的)、靜態變數(全域性的和區域性的、初始化的以及未初始化的)。

堆:動態分配的區域

棧:區域性變數(初始化以及未初始化的,但是不包括靜態變數)、區域性唯讀變數(const)。

分析資料存放位置:

例子**:

分析bss段:

bss段是資料段的乙個子段。

linux應用程式設計筆記(5)linux中獲取隨機數

隨機數 隨機數是隨機出現,沒有任何規律的一組數列。偽隨機數 真正的完全隨機的數列是不存在的,只是一種理想情況。我們平時要用到隨機數時一般只能通過一些演算法得到乙個偽隨機數序列。我們平時說到隨機數,基本都指的是偽隨機數。連續多次呼叫rand函式可以返回乙個偽隨機數序列 srand函式用來設定rand獲...

Linux 1 4 應用程式位址布局

1 記憶體組成 2 記憶體布局 linux所有應用程式都是從0x80480000開始,其中0x80480000是乙個虛擬位址 1 下面來測試一下應用程式的位址分布 include include int global init a 1 全域性的,初始化的變數 資料段 int global unini...

linux應用程式位址布局,王明學learn

linux應用程式位址布局 在學習linux應用程式開發時,經常會遇到如下概念 段 資料段 bss段 block started by symbol,又名 未初始化資料段 堆 heap 和棧 stack 而這些部分也是構成linux應用程式的重要組成部分。一 記憶體布局 2.堆向高記憶體位址生長 3...