linux c c 應用程式的記憶體分段

2021-10-06 14:20:47 字數 1239 閱讀 6509

/*g-global  l-local

* * s-static

* * c-const

* * n-not init

* * i-init

* * =int char ...

* * v-valued

* */

#include #include #define yk_macro_0 0   //?

#define yk_macro_1 1   //?

int yk_g_n_int;               //.bss

int yk_g_i_int_0=0;           //.bss

int yk_g_i_int_1=1;           //.data

static int yk_g_s_n_int;      //.bss

static int yk_g_s_i_int_0=0;  //.bss

static int yk_g_s_i_int_1=1;  //.data

const static int yk_g_c_s_n_int;  //.bss

static const int yk_g_s_c_n_int;  //.bss

const static int yk_g_c_s_i_int_0=0;  //.rodata

static const int yk_g_s_c_i_int_0=0;  //.rodata

const static int yk_g_c_s_i_int_1=1;  //.rodata

static const int yk_g_s_c_i_int_1=1;  //.rodata

const int yk_g_c_i_int_0=0;     //.rodata

const int yk_g_c_i_int_1=1;     //.rodata

const int yk_g_c_n_int;         //.bss

int main(int argc,char ** ar**)   //.text

//小結:1)const賦值的---> rodata   , const沒賦值的---> bss

//    2)值為0的都在 bss(不管是預設給的,還是自己賦值的),   有初始值的(不為0) 全在data

//    3)非static括號內的都在堆裡

//使用objdump -t 檢視所有符號表,然後通過grep篩選

linux應用程式記憶體布局

對向高記憶體位址生長,棧想低記憶體位址生長 linux中所有的應用程式都是這個布局,每個應用程式都是從0x80480000這個位址開始的,這樣衝突嗎?不衝突,因為這個位址是乙個虛擬位址,linux中每個應用程式都有自己的虛擬位址空間。第二行是資料段的記憶體位址範圍。第三行是堆的記憶體位址範圍。最後一...

C 應用程式記憶體結構

bss段 bss段 bss segment 通常是指用來存放程式中未初始化的全域性變數的一塊記憶體區域。bss是英文block started by symbol的簡稱。bss段屬於靜態記憶體分配。資料段 資料段 data segment 通常是指用來存放程式中已初始化的全域性變數的一塊記憶體區域。...

android應用程式使用記憶體的指令碼

我們知道可以用adb shell procrank列印手機中各個應用程式使用的記憶體。pss就是在手機正在執行中看到的占用記憶體。我們可以製作以下指令碼,每秒鐘列印一次應用的記憶體使用情況,便於觀察應用對記憶體的使用情況。com.miui.mihome2為應用的包名,此處為小公尺桌面。檔名track...