常見的記憶體空間分為**區
儲存可執行的**全域性資料區
儲存全域性變數和靜態變數
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 ...