在學習lighthttped的**時,裡面的記憶體申請用的都是calloc而不是我們慣用的malloc,於是學習一下兩者的區別:
函式原型:
void *malloc( size_t size ); //分配的大小
void *calloc( size_t numelements, size_t sizeofelement ); //
第乙個引數為元素的個數,第二個引數是每個元素的大小
不同點是:用malloc
分配儲存空間時,必須由我們計算需要的位元組數。如果想要分配5個
int型的空間,那就是說需要
5*sizeof(int)
的記憶體空間:最大的區別就是:用
malloc
只分配空間不初始化,也就是依然保留著這段記憶體裡的資料,而
calloc
則進行了初始化,
calloc
分配的空間全部初始化為
0,這樣就避免了可能的一些資料錯誤。
C語言 malloc 與 calloc的區別
用malloc和calloc分別實現同乙個功能。如下 include include void main check p1 return0 void check int p printf n include include void main check p1 return0 void check ...
malloc 和 calloc 的區別
void calloc size t num elements,size t element size void malloc size t size calloc和malloc都用於分配記憶體。1.malloc函式 malloc函式可以從堆上獲得指定位元組的記憶體空間,其函式宣告如下 void m...
malloc和calloc的區別
函式 malloc 和calloc 都可以用來動態分配記憶體空間 但兩者稍有區別。malloc 函式有乙個引數 即要分配的記憶體空間的大小 void malloc size t size calloc 函式有兩個引數 分別為元素的數目和每個元素的大小 這兩個引數的乘積就是要分配的記憶體空間的大小。v...