c语言内存分配函数
三個(gè)函數(shù)的聲明分別是:
void* realloc(void* ptr, unsigned newsize);
void* malloc(unsigned size);
void* calloc(size_t nelem, size_t elsize);
都在stdlib.h函數(shù)庫(kù)內(nèi)
原型:extern void *realloc(void *mem_address, unsigned int newsize);
用法:#include <alloc.h>
功能:改變mem_address所指內(nèi)存區(qū)域的大小為newsize長(zhǎng)度。
說(shuō)明:如果重新分配成功則返回指向被分配內(nèi)存的指針,否則返回空指針NULL。
??????? 當(dāng)內(nèi)存不再使用時(shí),應(yīng)使用free()函數(shù)將內(nèi)存塊釋放。
原型:extern void *malloc(unsigned int num_bytes);
用法:#include <alloc.h>
功能:分配長(zhǎng)度為num_bytes字節(jié)的內(nèi)存塊
說(shuō)明:如果分配成功則返回指向被分配內(nèi)存的指針,否則返回空指針NULL。
??????? 當(dāng)內(nèi)存不再使用時(shí),應(yīng)使用free()函數(shù)將內(nèi)存塊釋放。
原型:extern void *calloc(int num_elems, int elem_size);
用法:#include <alloc.h>
功能:為具有num_elems個(gè)長(zhǎng)度為elem_size元素的數(shù)組分配內(nèi)存
說(shuō)明:如果分配成功則返回指向被分配內(nèi)存的指針,否則返回空指針NULL。
??????? 當(dāng)內(nèi)存不再使用時(shí),應(yīng)使用free()函數(shù)將內(nèi)存塊釋放。
區(qū)別:
1、calloc在動(dòng)態(tài)分配完內(nèi)存后,自動(dòng)初始化該內(nèi)存空間為零,而malloc不初始化,里邊數(shù)據(jù)是隨機(jī)的垃圾數(shù)據(jù)
2、realloc是給一個(gè)已經(jīng)分配了地址的指針重新分配空間,參數(shù)ptr為原有的空間地址,newsize是重新申請(qǐng)的地址長(zhǎng)度
轉(zhuǎn)載于:https://www.cnblogs.com/xmphoenix/archive/2011/08/22/2148931.html
總結(jié)
- 上一篇: WTL自绘滚动控件
- 下一篇: 股票出货和洗盘的区别