gpt4 book ai didi

c - 为什么 calloc 需要两个参数而 malloc 只需要一个参数?

转载 作者:太空狗 更新时间:2023-10-29 16:35:17 28 4
gpt4 key购买 nike

一直写calloc(1, sizeof(MyStruct)) 对我来说很麻烦。我不想使用包装此方法等的想法。我的意思是我想知道两个参数给我什么?如果它给出了一些东西,为什么 malloc 也没有两个参数?

顺便说一句,我搜索了这个问题的答案,但没有找到真正好的答案。这些答案是 calloc 可以分配比 malloc 更大的 block 等等。

我看到另一个答案是calloc分配一个数组。使用 malloc 我可以相乘,我会得到一个数组,我可以在没有 1, 的情况下使用它。

最佳答案

历史原因。

在引入calloc 时,malloc 函数并不存在,calloc 函数将为一个元素对象。

后来引入 malloc 时,决定返回的内存将正确对齐以供任何使用(这会消耗更多内存),因此只需要一个参数。 calloc 的 API 未更改,但 calloc 现在还返回正确对齐的内存以供任何使用。

编辑:

请参阅评论中的讨论和来自 @JimBalter 的有趣输入.

我关于引入 malloccalloc 的第一个陈述可能是完全错误的。

此外,真正的原因也可能与对齐无关。 C 的历史已经被编译器实现者改变了很多。 malloccalloc 可能来自不同的组/编译器实现者,这可以解释 API 的差异。我实际上赞成这种解释是真正的原因。

关于c - 为什么 calloc 需要两个参数而 malloc 只需要一个参数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12555911/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com