歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
您现在的位置: Linux教程網 >> UnixLinux >  >> Linux基礎 >> Linux技術

malloc,ralloc,calloc的區別

三個函數的原型

void* realloc(void* ptr, unsigned newsize);

void* malloc(unsigned size);

void* calloc(size_t numElements, size_t sizeOfElement);

使用的時候都要加頭文件stdlib.h。

它們的作用是,請求系統分配地址,返回值為系統分配的地址,如果請求失敗,返回值

為空(NULL)

malloc用於申請一段新的地址,參數size為需要內存空間的長度,如

char *p;

p = (char *)malloc(10);

calloc與malloc差不多。

參數sizeOfElement為申請地址的單位元素長度,numElements為元素個數,如:

char* p;

p=(char*)calloc(10,sizeof(char));

這個例子與上一個效果相同

realloc是給一個已經分配了地址的指針重新分配空間,

參數ptr為原有的空間地址,newsize是重新申請的地址長度

如:

char*

p;

p=(char*)malloc(sizeof(char)*10);

p=(char*)realloc(p,sizeof(char)*20);

這裡申請的空間都是以字節為單位

malloc與calloc的區別為1塊與n塊的區別:

malloc調用形式為(類型*)malloc(size):

在內存的動態存儲區中分配一塊長度為“size”字節的連續區域,返回該區域的首地址。

calloc調用形式為(類型*)calloc(n,size):

在內存的動態存儲區中分配n塊長度為“size”字節的連續區域,返回首地址。

realloc調用形式為(類型*)realloc(*ptr,size):將ptr內存大小增大到size。

Copyright © Linux教程網 All Rights Reserved