1.malloc函式
malloc函式可以從堆上獲得指定位元組的記憶體空間,其函式宣告如下:
void * malloc(int n);
引數釋義:
n:申請空間大小(單個型別大小*總個數)
2.calloc函式
calloc函式的功能與malloc函式的功能相似,都是從堆分配記憶體。其函式宣告如下:
void *calloc(int n,int size);
引數釋義:
size:單個型別大小
n:申請的個數
注意:最後申請空間大小為: n和size相乘
3.realloc函式
realloc函式的功能比malloc函式和calloc函式的功能更為豐富,可以實現記憶體分配和記憶體釋放的功能,其函式宣告如下:
void * realloc(void * p,int n);
使用malloc函式,calloc函式和realloc函式分配的記憶體空間都要使用free函式或指標引數為null的realloc函式來釋放。
相同點:
1.都是從堆上申請空間
2.都需要對返回值判空
3.都需要使用者free釋放
4.返回值型別相同(void*)
5.都需要型別轉化
6.底層實現上是一樣的,都需要開闢多餘的空間,用來維護申請的空間
不同點:
1.函式名字不同和引數型別不同。
2.calloc會對申請空間初始化,並且初始化為0,而其他兩個不會。
3.malloc申請的空間必須使用memset初始化
4.realloc是對已經存在的空間進行調整,當第乙個引數傳入null的時候和malloc一樣
調整分為兩種情況:
a:調整的空間比原有空間大:
malloc,calloc,realloc函式區別
ansi c 說明了三個用於儲存空間動態分配的函式 1 malloc 分配指定位元組數的儲存區。此儲存區中的初始值不確定 2 calloc 為指定長度的物件,分配能容納其指定個數的儲存空間。該空間中的每一位 bit 都初始化為0 3 realloc 更改以前分配區的長度 增加或減少 當增加長度時,可...
malloc,calloc,realloc用法小結
1 原型宣告 void malloc unsigned int size 向系統聲請分配size個位元組的記憶體空間 void calloc size t n,size t size 在記憶體的動態儲存區中分配n個長度為size的連續空間 void realloc void ptr,unsigned...
nil Nil NULL NSNull 之間的區別
nil 是對objective c id 物件賦空值 例如 nsstring string nsstring stringwithformat test string nil 對於objective c 集合類物件 比如陣列物件,字典物件,當我們不需要再使用他們的時候,對他們release 的同時最...