Chinaunix首页 | 论坛 | 博客
  • 博客访问: 12401401
  • 博文数量: 1293
  • 博客积分: 13501
  • 博客等级: 上将
  • 技术积分: 17974
  • 用 户 组: 普通用户
  • 注册时间: 2011-03-08 18:11
文章分类

全部博文(1293)

文章存档

2019年(1)

2018年(1)

2016年(118)

2015年(257)

2014年(128)

2013年(222)

2012年(229)

2011年(337)

分类: C/C++

2013-01-28 14:28:57

1、calloc函数功能

calloc函数的功能与malloc函数的功能相似,都是从堆分配内存。函数声明如下:

void *calloc(int n,int size)

函数返回值为void型指针。

如果执行成功,函数从堆上获得size * n的字节空间,并返回该空间的首地址。如果失败,返回NULL。

该函数与malloc函数的一个显著区别是:calloc函数得到的内存空间是经过初始化的,其内容全为0。所以calloc函数适合为数组申请空间,可以将Size设置为数据元素的空间长度,将n设置为数据的空间。

 

2、案例分析


#include "stdafx.h" 
#include  
#define SIZE 10
int _tmain(int argc, _TCHAR* argv[]) 
{ 
    int *p  = NULL; 
    int i = 0;
    /* 从堆里分析SIZE个空间 */ 
    p = (int *)calloc(SIZE,sizeof(int)); 
    if (p == NULL) 
    { 
        printf("Error in calloc\\n"); 
        return -1; 
    }
    /* 给SIZE个空间赋值  */ 
    for (i=0;i


image


需要注意的是,calloc分配的空间也需要自动释放。

上面注意到,一些没有被赋值的数组元素全部为0,证明了上面所提到的:

calloc函数得到的内存空间是经过初始化的,其内容全为0

阅读(3443) | 评论(0) | 转发(3) |
给主人留下些什么吧!~~