C語言malloc與calloc區(qū)別詳解
區(qū)別
開門見山,malloc與calloc在內存分配時,前者分配一整塊,后者分配n塊,并且后者在分配時會將內存置為0,前者不會內存里是垃圾數(shù)據。
另外它們參數(shù)不同,malloc參數(shù)只有一個無符號整型的num表示分配的字節(jié)數(shù),函數(shù)原型如下
void *malloc(size_t num);
calloc參數(shù)有兩個,分別是無符號整型num表示分配的對象的個數(shù),以及無符號整型size表示每個對象的大小
void *calloc(size_t num, size_t size);
用法
它們在用法上相似,可以起到相同的效果,并且都返回內存的首地址。
以分配容納5個int整型的空間為例,代碼如下
malloc用法
#include <stdio.h> #include <stdlib.h> int main() { ?? ?int *p = (int*)malloc(5*sizeof(int)); ?? ?for(int i=0; i<5; i++) ?? ??? ?p[i]=i; ?? ?for(int i=0; i<5;i++) ?? ??? ?printf("%d ",p[i]); ?? ?return 0; }
calloc用法
#include <stdio.h> #include <stdlib.h> int main() { ?? ?int *p = (int*)calloc(5,sizeof(int)); ?? ?for(int i=0; i<5; i++) ?? ??? ?p[i]=i; ?? ?for(int i=0; i<5; i++) ?? ??? ?printf("%d ",p[i]); ?? ?return 0; }
運行結果
運行結果相同
0 1 2 3 4
到此這篇關于C語言malloc與calloc區(qū)別詳解的文章就介紹到這了,更多相關C語言malloc與calloc內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
Objective-C中常用的結構體NSRange,NSPoint,NSSize(CGSize),NSRect實例分析
這篇文章主要介紹了Objective-C中常用的結構體NSRange,NSPoint,NSSize(CGSize),NSRect實例分析,有助于更加直觀的理解Object-C常用的結構體,需要的朋友可以參考下2014-07-07