C语言calloc的用法?

C语言calloc的用法?,第1张

void *calloc(size_t nobj, size_t size);calloc函数为由nobj个长度为size的对象组成的数组分配内存,并返回指向分配区域的指针;若无法满足要求,则返回NULL。该空间的初始长度为0字节

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

}


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/yw/11548536.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-16
下一篇 2023-05-16

发表评论

登录后才能评论

评论列表(0条)

保存