malloc calloc realloc之間區別

2021-10-02 17:45:15 字數 958 閱讀 2330

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 的同時最...