calloc(), malloc(), realloc(), alloca()函數的區別

malloc : 向堆申請分配內存,不初始化
calloc  : 向堆申請分配內存,初始化爲0
realloc:  向堆申請分配內存,可調整大小
alloc   :  向申請內存,不需手動釋放

四個函數的聲明分別是:

void * __cdecl  alloca(size_t);

void* malloc(unsigned size);

void* calloc(size_t nelem, size_t elsize);    //如果nelem=0,就相當於malloc,但他會初始化內存空間爲0

void* realloc(void* ptr, unsigned newsize);    //當ptr=NULL時,就相當於malloc

功能:改變mem_address所指內存區域的大小爲newsize長度。 
說明:如果重新分配成功則返回指向被分配內存的指針,否則返回空指針NULL。 

推薦播客:http://blog.csdn.net/snlying/article/details/4005238


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章