/*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...