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