Chinaunix首页 | 论坛 | 博客
  • 博客访问: 6275554
  • 博文数量: 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++

2014-03-31 08:44:43

原文地址:memory申请函数malloc与calloc 作者:wgjnje


类别            
区别    
malloc    
不初始化,里边数据是随机的垃圾数据
calloc
calloc在动态分配完内存后,自动初始化该内存空间为零

应用实例1

点击(此处)折叠或打开

  1. #include<stdio.h>
  2. #include<stdlib.h>
  3. #include<string.h>
  4.  
  5. int main(void)
  6. {
  7. char*str=NULL;
  8. /*分配内存空间*/
  9. str=(char*)calloc(10,sizeof(char));
  10. /*将hello写入*/
  11. strcpy(str,"Hello");
  12. /*显示变量内容*/
  13. printf("String is %s\n",str);
  14. /*释放空间*/
  15. free(str);
  16. return 0;
  17. }
应用实例2
从该例子可以看出calloc分配完后将元素初始化,结果输出10个0;

点击(此处)折叠或打开

  1. #include<stdio.h>
  2. #include<stdlib.h>
  3. int main(void)
  4. {
  5. int i;
  6. int *pn=(int*)calloc(10,sizeof(int));
  7. for(i=0;i<10;i++)
  8.     printf("%3d",pn[i]);
  9. printf("\n");
  10. free(pn);
  11. return 0;
  12. }

void *malloc(long NumBytes);                        
函数
头文件
用法
功能
相关函数
calloc      
stdlib.h或者malloc.h
#include      
void *calloc(size_t nmemb, size_t size);
在内存的区中分配nmemb个长度为size的连续空间,函数返回一个指向分配起始地址的;如果分配不成功,返回NULL
malloc、realloc、free、alloca
malloc
该函数分配了NumBytes个字节,并返回了指向这块内存的指针。如果分配失败,则返回一个空指针(NULL)

一般使用后要使用 free(起始地址的指针) 对内存进行释放,不然内存申请过多会影响计算机的性能,以至于得重启电脑。如果使用过后不清零,还可以使用指针对该块内存进行访问。
#man malloc
#man calloc

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