在<stdlib.h>头文件中声明的calloc()函数与malloc()函数相比有两个优点。第一,它把内存分配为给定大小的数组,第二,它初始化了所分配的内存,所有的位都是0。calloc()函数需要两个参数:数组的元素个数和数组元素占用的字节数,这两个参数的类型都是size_t。该函数也不知道数组元素的类型,所以所分配区域的地址返回为void *类型。

下面的语句使用calloc()为包含75个int元素的数组分配内存:

int *pNumber = (int *) calloc(75, sizeof(int));

如果不能分配所请求的内存,返回值就是NULL,也可以检查分配内存的结果,这非常类似于malloc(),但calloc()分配的内存区域都会初始化为0。

将程序7.11改为使用calloc()代替malloc()来分配需要的内存,只需修改一条语句,如下面的粗体显示,其他代码不变:

/* Allocate sufficient memory to store the number of primes required */primes = (unsigned long *)calloc(total, sizeof(unsigned long));if (primes == NULL){printf("/nNot enough memory. Hasta la Vista, baby./n");return 1;}

用calloc()函数分配内存相关推荐

  1. malloc函数分配内存失败的原因及解决方法

    原文链接:http://blog.csdn.net/lighthear/article/details/70146602 malloc函数分配内存失败的原因及解决方法 先说结论 malloc()函数分 ...

  2. 内存管理-alloc_pages()函数分配内存

    前言 Linux对页面分配分快速和慢速两种方法.在__alloc_pages_nodemask函数中,首先会使用快速方法进行内存分配,当分配失败时会进入慢速路径,函数最终会返回申请到的内存第一个页面p ...

  3. C——通过调用函数分配内存

    http://blog.csdn.net/u012627502/article/details/3579724 1)以返回值方式返回:把动态分配的存储位置地址,赋值给指针类型返回值(不同于被调用函数的 ...

  4. c语言字符指针分配内存,内存分配函数及使用注意事项,C语言内存分配函数完全攻略...

    C 语言主要提供 malloc.realloc.calloc.alloca 与 aligned_alloc 等内存分配函数来实现对内存的分配功能. 1)malloc 函数原型如下: void * ma ...

  5. C语言-malloc()函数与calloc()函数的使用及区别

    1.malloc()函数 功能 申请堆内存 所需头文件 #include<stdlib.h> 函数原型 void *malloc(size_t,size); 参数(size) 所申请的一块 ...

  6. malloc()函数实现内存动态分配

    c语言中,变量在使用前必须被定义并且安排好存储空间,全局变量.静态局部变量的存储空间是在编译时确定,在程序开始执行前完成.函数参数.局部变量是在执行函数或者进入变量定义所在的复合语句时为它们分配存储空 ...

  7. 内存分配的原理__进程分配内存有两种方式,分别由两个系统调用完成:brk和mmap(不考虑共享内存)

    如何查看进程发生缺页中断的次数? 用ps -o majflt,minflt -C program命令查看. majflt代表major fault,中文名叫大错误,minflt代表minor faul ...

  8. 详细讲解从用户空间申请内存到内核如何为其分配内存的过程

    Linux内存管理 摘要:本章首先以应用程序开发者的角度审视Linux的进程内存管理,在此基础上逐步深入到内核中讨论系统物理内存管理和内核内存的使用方法.力求从外到内.水到渠成地引导网友分析Linux ...

  9. 关于C语言的malloc函数以及内存泄漏的问题

    malloc函数 malloc函数的原型: (void *)malloc(int size) malloc函数的返回值是一个void类型的指针,参数为int类型的数据,即申请分配的内存大小,单位是字节 ...

最新文章

  1. 从命令行使用 wget 调试网页错误
  2. Java String类源码解析
  3. 【控制】盖尔圆盘定理
  4. 【学术相关】研究生第一篇学术论文常犯问题总结
  5. 文件上传java逻辑_Java 文件上传 实例
  6. 正则表达式match和group的区别 具有相同模式的字符串使用组的提取案例及原理
  7. (25)Verilog HDL循环语句:forever
  8. Ping++ 支付接口对接
  9. 整合dubbo报错严重 Exception sending context initialized event to listener instance of class 解决
  10. org.gradle.api.tasks.TaskExecutionException: Execution failed for task ':app:processDebugManifest
  11. Phalcon入坑必须知道的功能《Phalcon入坑指南系列 二》
  12. 数学建模-自来水管道铺设问题
  13. ORACLE 常用的SQL语法和数据对象
  14. 大数据展示 定位_大数据平台 定位
  15. 计算机辅助项目管理实验论文,计算机辅助项目管理B卷
  16. 基于JAVA词典设计碰到的问题,Hanlp配置自定义词典遇到的问题与解决方法
  17. 阿噗啊噗服务器维护,这些App我能笑一年!阿噗整理的20个奇葩App,没玩过你就OUT了!...
  18. 零基础学UI设计能够学会吗?
  19. 开发Unity3D空战类插件 战机飞行模拟模板Pro版本
  20. oracle创建校友查询系统,中国同学录(5460)及5460的数据库

热门文章

  1. 永恒之蓝(MS17-010)补丁KB号
  2. Loadrunner录制+运行+结果-【飞机订票系统实战】
  3. 微信小程序快速开发上手
  4. JavaScript笔记(6)
  5. 《21天学通C#》使用.NET数据类型定义变量
  6. 父级透明,子级不透明
  7. √GMAP.NET 地图
  8. 在Oracle中添加用户登录名称
  9. Objective-C 类和对象
  10. 史蒂夫 乔布斯(Steve Jobs)在斯坦福大学2005年毕业典礼上的演讲