1. 程式人生 > >7、Linux應用程序地址布局

7、Linux應用程序地址布局

概念 初始化 lin mbo 只讀 靜態變量 image start 內存地址

程序構成

在學習Linux應用程序開發時,經常會遇到如下概念:

    代碼段、數據段、BSS段(Block Started by Symbol,又名:未始化數據段) 、堆(heap)和棧(stack)。始化數據段) 、堆(heap)和棧(stack)。而這些部分也是構成Linux應用程序的重要組成部。

1.從低地址到高地址分別為:代碼段、數據段、BSS段、堆、棧

2.堆向高內存地址生長3.棧向低內存地址

技術分享圖片

數據存放

1.代碼段:代碼,全局常量(const)、字符串常量

2.數據段:全局變量(初始化以及未初始化的)、靜態變量(全局的和局部的、初始化的以及未初始化的)

3.堆:動態分配的區域3.堆:動態分配的區域

4.棧:局部變量(初始化以及未初始化的,但不包含靜態變量)、局部只讀變量(const)

利用 readelf –S 程序名readelf –S 程序名分析 BSS

7、Linux應用程序地址布局