使用calloc()代替malloc()和memset()有什么好处吗?

问题描述 投票:9回答:1

我想知道 calloc() 胜过 malloc 随后 memset. 后者似乎是分配和初始化内存的最常见方式。

A github代码搜索 屡见不鲜 calloc 测试和实现,但在前多少个页面中,没有实际使用的代码。calloc.

有谁知道任何项目组织使用或建议使用 calloc 以及在什么情况下推荐它?

从下面的评论和回答中,这里有一些目前出现的想法。

  • calloc(n, size) 可以防止溢出,是可能与 malloc(n * size)

  • 结合 商场记忆组 给予 呼叫 机会请求一个已知已经归零的页面。

  • 的缺点是 呼叫 的组合步骤可能会排除其他围绕着 商场.

c memory-management malloc dynamic-memory-allocation calloc
1个回答
15
投票

好吧,我用的是 calloc 在相当多的C代码中,所以我想这是一个答案。 我认为稍微不寻常的调用方法(元素的数量和元素的大小)可能会引起人们的注意。 然而,另一个原因是,很多大型项目都使用了围绕着 malloc, calloc,以及在内存分配失败时做错误处理(通常是终止程序)的朋友。 所以实际代码中使用了 xcalloc 而不是。

使用 calloc 在...上 malloc 加上 memset 就是 calloc 可能更有效率。 如果C库已经知道某页被清零了(也许是刚从操作系统那里得到了新的清零内存),它就不必显式地将其清零。

© www.soinside.com 2019 - 2024. All rights reserved.