void *malloc(size_t size);malloc函数为长度size的对象分配内存,并返回指向分配区域的指针;若无法满足要求,则返回NULL。该函数不对分配的内存区域进行初始化。
void *realloc(void *p, size_t size);realloc函数将p指向的对象的长度修改为size个字节。如果新分配的内存比原来内存大,则内存的内容保持不变,增加的空间不进行初始化。如果新分配的内存比原来的内存小,则分配内存单元不初始化,realloc函数返回指向新分配空间的指针;若无法满足要求,则返回NULL。在这种情况下,原来指针p指向的单元内容保持不变。
str = (char*)calloc(10,sizeof(char))是什么意思?
是分配10个大小为char,也就是十个字节的内存给str,地址类型是char指针
calloc函数的功能与malloc函数的功能相似,都是从堆分配内存。
函数名: calloc
函数原型:void *calloc(int n,int size)
功 能: 函数返回值为void型指针。如果执行成功,函数从堆上获得size X n的字节空间,并返回该空间的首地址。如果执行失败,函数返回NULL。该函数与malloc函数的一个显著不同时是,calloc函数得到的内存空间是经过初始化的,其内容全为0。calloc函数适合为数组申请空间,可以将size设置为数组元素的空间长度,将n设置为数组的容量。
示例代码:
#include <stdio.h>#include <stdlib.h>
#define SIZE 5
int main()
{
int * p=NULL
int i=0
//为p从堆上分配SIZE个int型空间
p=(int *)calloc(SIZE,sizeof(int))
if(NULL==p){
printf("Error in calloc.\n")
return -1
}
//为p指向的SIZE个int型空间赋值
for(i=0i<SIZEi++)
p[i]=i
//输出各个空间的值
for(i=0i<SIZEi++)
printf("p[%d]=%d\n",i,p[i])
free(p)
p=NULL
return 0
}
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)