Chinaunix首页 | 论坛 | 博客
  • 博客访问: 6275007
  • 博文数量: 2759
  • 博客积分: 1021
  • 博客等级: 中士
  • 技术积分: 4091
  • 用 户 组: 普通用户
  • 注册时间: 2012-03-11 14:14
文章分类

全部博文(2759)

文章存档

2019年(1)

2017年(84)

2016年(196)

2015年(204)

2014年(636)

2013年(1176)

2012年(463)

分类: C/C++

2013-01-30 13:07:41

原文地址:calloc函数使用注意事项 作者:dyli2000

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

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