記憶體區域的布局

2021-10-18 20:33:08 字數 1038 閱讀 6529

常見的記憶體空間分為

**區

儲存可執行的**

全域性資料區

儲存全域性變數和靜態變數

int *a = "abcd";
棧區

堆區

#include #include /*

動態分配記憶體

為什麼需要動態分配記憶體:

1.儲存的資料 需要延長生命週期

2.乙個指標變數需要儲存資料,變數本身只能存位址

不能存資料,需要分配記憶體空間來儲存資料

*/ pc1 /ch

pc2pc3

int main();

//如果使用指標變數接收資料

//必須先為這個指標變數分配一片指向的記憶體空間

//有記憶體空間 才能存資料

//匯入標頭檔案stdlib.h

//使用malloc (memory alloc)申請記憶體空間

char *name ;

name = (char *)malloc(10*sizeof(char));

if(name == null)

scanf("%s", name);

printf("%s\n",name);

//使用realloc動態改變已經分配記憶體的大小

//增加或者減少

name = (char *)realloc(name, 20*sizeof(char));

if(name == null)

//使用完畢必須自己手動釋放記憶體

free(name);

char a[10] = ;

printf("%s", *a);

return 0;

}

C語言程式的儲存區域 記憶體布局

c語言程式的儲存區域 由c語言 文字檔案 形成可執行程式 二進位制檔案 需要經過編譯 彙編 連線三個階段。編譯過程把c語言文字檔案生成匯程式設計序,彙編過程把匯程式設計序形成二進位制機器 連線過程則將各個原始檔生成的二進位制機器 檔案組合成乙個檔案。c語言編寫的程式經過編譯 連線後,將形成乙個統一檔...

記憶體區域dump

程式除錯中,經常需要輸出記憶體資訊,以便進一步分析,下面是我寫的乙個簡單的輸出函式 sprintf hex i 3,02x str i 0xff printf 0x 3.2s in size cur 中 3.2s 表示輸出字串,寬度為3,精度為2 精度表示最多輸出兩個字元,多的捨去 左對齊,右填充空...

類的記憶體儲存區域

眾所周知,new出來的變數,申請的記憶體都是儲存在堆區 理論上來說是這樣子的,但是有時候看到int i 千萬不要脫口而出是棧記憶體,因為不一定,尤其在c 類中,需要重點注意。如下 class cls memory include cls memory.h cls memory cls memory ...