用 c 分配内存,为什么普遍都是用 malloc 而不是用 calloc?

2019-06-10 21:31:30 +08:00
 africwildman

用 c 分配内存,为什么普遍都是用 malloc 而不是用 calloc ? calloc 会初始化为 0,更安全啊?《深入理解 c 指针》里,我记得也是 malloc 用的多。百度了一下,没看到比较好的解释。我是用 calloc。

8612 次点击
所在节点    C
23 条回复
Yggdroot
2019-06-11 14:53:43 +08:00
先问是不是,再问为什么。难道不是 prefer calloc to malloc?
tigereatsheep
2019-06-13 20:04:26 +08:00
如果让我来实现编译器
在 32 位的机器上 void *malloc(size_t size) 函数可以简单地把 SP 寄存器中的值加了 size * 4,
而 void *calloc(size_t nmemb, size_t size) 函数还需要把原 SP~SP+size * 4 地址中的内存值都初始化一下,
那么 malloc 会快一些,但是一些细心的码农在做编译器的时候可能还会做一些保护之类的事,这样效率就不好说了
tigereatsheep
2019-06-13 20:08:09 +08:00
说错了,应该是 FP 寄存器。。。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/572612

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX