根据 Why malloc+memset is slower than calloc?
malloc
+memset
在某些情况下比 calloc
慢。
为什么 calloc
没有以这样的方式编写,它可以采用额外的 value
参数(如 memset
)来覆盖默认分配零?如果这样做,会有什么影响?
最佳答案
这些 calloc
或 memset
初始化在字节级别上运行,因此即使 memset
的值不同于 0
没那么有用。至少我不记得将它与不同的值一起使用。大多数情况下,您会为比 char
更宽的基类型分配内存。
另一方面是calloc
是初始化而不是赋值。平台可能具有内置函数,可将所有字节快速初始化为 0
,您在传递参数进行初始化时不会捕获此信息。
但可能最重要的方面是,这是 C 的历史。这些接口(interface)从一开始就存在,无法更改。
关于c - 为什么 calloc 不打算分配任意值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16536738/