c - 为什么 calloc 不打算分配任意值?

标签 c dynamic-allocation memset calloc

根据 Why malloc+memset is slower than calloc?

malloc+memset 在某些情况下比 calloc 慢。

为什么 calloc 没有以这样的方式编写,它可以采用额外的 value 参数(如 memset)来覆盖默认分配零?如果这样做,会有什么影响?

最佳答案

这些 callocmemset 初始化在字节级别上运行,因此即使 memset 的值不同于 0 没那么有用。至少我不记得将它与不同的值一起使用。大多数情况下,您会为比 char 更宽的基类型分配内存。

另一方面是calloc是初始化而不是赋值。平台可能具有内置函数,可将所有字节快速初始化为 0,您在传递参数进行初始化时不会捕获此信息。

但可能最重要的方面是,这是 C 的历史。这些接口(interface)从一开始就存在,无法更改。

关于c - 为什么 calloc 不打算分配任意值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16536738/

相关文章:

c - 创建的 C 数组的 Objective-C 初始值

c - 当没有 return 语句时,int 类型 return 语句的返回值

c - 文件无法识别 : File format not recognized

c - 为什么 char** 的 realloc 在分配后给出地址为 0 字节

c - C 中 memset 的行为

c++ - 为什么 std::fill(0) 比 std::fill(1) 慢?

c - pthread_barrier 不符合我的预期

c - 了解 C 中的位级浮点乘法?

c - 来自不兼容指针类型的警告分配

c++ - 动态分配类,有继承问题