malloc內存分配筆記

首先須要瞭解的基礎知識,也是很是重要的內容,就是C所定義的數據類型了。ide

一般計算機存儲的最小單位是字節(Byte),一個字節是8個bit。數據類型作佔用的字節數遵循ILP32或LP64規範,以下表所示。x86/Linux/gcc,遵循ILP32,而且char是有符號的。spa

類型 ILP32(位數) LP64(位數)
char 8 8
short 16 16
int 32 32
long 32 64
long long 64 64
指針 32 64

當咱們使用char *p=(char *)malloc(sizeof(char))開闢內存空間時,咱們就得到了1個字節的存儲空間,指針p指向該塊內存首地址。須要注意的是內存中的地址最小單位就是字節,而不是位,因此這個在這個特例中咱們不能移動p,好比企圖向p+1的地址空間寫數據,可能引發崩潰。 查看了malloc後發現其實malloc分配的地址空間一般比咱們要求的要大一些,因此可能p+1的位置仍是能寫數據,我嘗試到p+4後調用free(p)會崩潰。操作系統

一樣,int *p=(int *)malloc(4*sizeof(int)),即申請了4*4=16個字節,每一個×××佔用4字節,p就能夠保存4個×××數據,能夠使用下標或者指針移動來訪問這4個格子了。指針

一樣的咱們能夠申請更大的內存,須要注意的就是讀寫數據千萬在申請的範圍內了,用完後調用free()將內存還給操做系統。code

相關文章
相關標籤/搜索