我猜这可能是历史,早于C有功能原型的时代.在没有原型的这些时候,基本上必须有这些论点int,typedef size_t甚至可能还没有发明.但是,INTMAX你可以分配的最大块,malloc并将它分成两部分,只是为了给你更多的灵活性,并允许你分配真正大的数组.即使在那个时候有方法来获得,其中默认清零从系统大页,所以效率不是这么多的问题calloc比malloc.
如今,随着size_t手头的功能原型,这只是C的丰富历史的每日提醒.
参数名称很好地记录了它:
void *malloc(size_t size);
void *calloc(size_t nelem, size_t elsize);
Run Code Online (Sandbox Code Playgroud)
后一种形式允许通过提供元素数量和元素大小来整齐地分配数组。通过乘法可以实现相同的行为malloc。
但是,calloc还将分配的内存初始化为 0。malloc没有 init,因此该值未定义。malloc理论上可以更快,因为没有设置所有内存;只有大量的情况下才可能注意到这一点。
在这个问题中,建议是callocclear-alloc,malloc是mem-alloc。
| 归档时间: |
|
| 查看次数: |
4110 次 |
| 最近记录: |