首页 文章

更喜欢malloc而不是calloc [复制]

提问于
浏览
10

可能重复:c malloc和calloc之间的区别

是否有任何情况你更喜欢malloc而不是calloc . 我知道malloc和calloc都动态分配内存,而calloc也将所有内存中的所有位初始化为零 . 从这个我会猜测它总是更好地使用calloc而不是malloc . 或者在某些情况下malloc更好?表现可能是?

3 回答

  • 21

    如果需要动态分配的内存为零初始化,则使用 calloc .

    如果您不需要动态分配的内存进行零初始化,则使用 malloc .

    您并不总是需要零初始化内存;如果你不需要零初始化的内存,不要支付初始化它的成本 . 例如,如果您分配内存然后立即复制数据以填充分配的内存,则没有理由执行零初始化 .

    callocmalloc 是执行不同操作的函数:使用最适合您需要完成的任务的函数 .

  • 1

    如果你不小心,依赖calloc的零初始化可能是危险的 . 归零内存为整数类型提供0,为预期的char类型提供\ 0 . 但它不一定对应于float / double 0或NULL指针 .

  • 2

    calloc 零初始化的're normally allocating memory with the specific intent of storing something there. That means (at least most of) the space that'很快将被其他值覆盖 . 因此,大多数代码使用 malloc 来获得一些额外的速度而没有真正的损失 .

    我见过的唯一一个用于 calloc 的代码是(据称)基于Java相对于C的速度的基准 . 在C版本中,它使用 calloc 分配了一些内存,然后使用 memset 再次初始化内存(在我看来)是一个相当透明的尝试,产生有利于Java的结果 .

相关问题