我想知道calloc()
是否优于malloc
,然后是memset
。后者似乎是分配和初始化内存的最常见方式。使用calloc()而不是malloc()和memset()有什么好处吗?
A github code search变成了很多calloc
测试和实现,但在第一页的数量没有代码实际使用calloc
。
有谁知道任何项目/组织使用或推荐使用calloc
和推荐它的情况?
从意见和下面的答案,这里是一些有想法浮现至今:
calloc(n, size)
可以防止溢出这是可能与malloc(n * size)
结合的malloc和memset的给calloc一个机会来请求一个已知已被归零的页面。
一个缺点释放calloc,该组合步骤可以排除周围的malloc其他包装。
从来不知道任何人使用它,我从来没有使用它,或者知道它的存在。我不知道为什么,但它只是不觉得像C. – Dave 2013-03-18 00:51:06
请注意,'malloc()'后面跟'memset()'实际上保证比'calloc()'慢。 – 2013-03-18 00:58:50
如果您在GitHub上搜索'malloc',您还可以在找到使用之前找到实现和测试代码。 – 2013-03-18 01:03:19