C语言中 calloc 和 malloc 区别?

C语言

在 C 语言中,callocmalloc 都是用于动态内存分配的函数,但它们有以下几个主要区别:

  1. 初始化

    • malloc: 分配内存时不会对分配的内存进行初始化,因此,分配的内存中的数据是未定义的(可能是随机值)。
    • calloc: 分配内存时会将所有分配的内存初始化为零。这意味着在使用 calloc 分配的内存中,所有字节都被设置为 0
  2. 参数

    • malloc: 只需要一个参数,即要分配的字节数,例如 malloc(size)
    • calloc: 需要两个参数,第一个是元素的个数,第二个是每个元素的大小,例如 calloc(num, size),它会分配 num * size 字节的内存。
  3. 返回值

  • 两者都返回一个指向已分配内存的指针。如果内存分配失败,它们都会返回 NULL
  1. 用法示例
    • malloc:
      int *arr = (int *)malloc(10 * sizeof(int)); // 分配 10 个整数大小的内存,但不初始化
      
    • calloc:
      int *arr = (int *)calloc(10, sizeof(int)); // 分配 10 个整数大小的内存,并初始化为 0
      

总结来说,malloc 分配的内存是未初始化的,而 calloc 分配的内存会初始化为零。此外,calloc 需要两个参数来指定内存块的数量和每个块的大小,而 malloc 只需要一个参数来指定总的字节数。

#C##面试题##面经#
全部评论

相关推荐

2025-12-28 16:32
重庆邮电大学 Java
程序员花海:1.技能放最后,来面试默认你都会,技能没啥用 2.实习写的看起来没啥含金量,多读读部门文档,包装下 接LLM这个没含金量 也不要用重构这种 不会给实习生做的 3.抽奖这个还是Demo项目,实际在公司里面要考虑策略,满减,触发点,触发规则 库存 之类的,不是这个项目这么简单 4.教育背景提前,格式为 教育背景 实习 项目 技能 自我评价
简历被挂麻了,求建议
点赞 评论 收藏
分享
狸猫换offer:神通广大的互联网
点赞 评论 收藏
分享
评论
4
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务