malloc
void *melloc(size_t size)
size 开辟的字符数
int main() { int *p=(int *)malloc(10*sizeof(int));//开辟40个字节 //用malloc开辟空间一定要判断是否开辟成功 if(p==NULL) { printf("out of memory"); exit(EXIT_FAILURE); //EXIT_SUCCESS 0 //EXIT_FAILURE 1 } int i=0; for(;i<10;i++) { p[i]=i;//*(p+i) for(i=0;i<10;i++) { printf("%d",p[i]); } system("pause"); return 0; }
calloc
void *calloc(size_t numbei_elements,size_t element_new_size)
calloc的参数包括所需元素的数量和每个元素的字节数
//calloc 有可能会开辟失败,初始化 #include<stdio.h> #include<stdlib.h> int main() { int i = 0; int *p = (int *)colloc(10, sizeof(int)); if (p == NULL) { printf("out of memory"); exit(EXIT_FAILURE); } for (i = 0; i < 10; i++) { printf("%d", p[i]); system("pause"); return 0; } }
realloc
realloc函数用于修改一个原先已经分配的内存块大小,realloc和calloc的区别主要是后者返回指向内存的指针之前把它初始化为0.
原型为:
void realloc(void *ptr,size_t new_size);
free
void free(void *pointer);
free用于动态内存的释放,free的参数必须要么是NULL要么是一个先前从malloc、calloc、realloc返回的值,向free传递一个NULL参数不会产生任何效果
总结
malloc和calloc都用于动态分配一块内存,并返回一个指向该内存的指针。
malloc参数就是需要分配的内存的字节数,返回时内存未以任何形式初始化。
calloc的参数是需要分配的元素的个数和每个元素的长度,在返回时把内存初始化为0。
realloc函数可以改变一块已经动态分配的内存的大小
malloc、realloc、calloc若开辟失败均返回NULL
本文出自 “无以伦比的暖阳” 博客,请务必保留此出处http://10797127.blog.51cto.com/10787127/1750009
原文:http://10797127.blog.51cto.com/10787127/1750009