c - 为什么 calloc 接受两个参数而 malloc 只接受一个参数?

标签 c calloc

IMO 一个就够了,为什么 calloc 需要把它分成两个参数?

最佳答案

我猜这可能是历史,早于 C 语言拥有函数原型(prototype)的时代。在那些没有原型(prototype)的时代,参数基本上必须是 inttypedef size_t 可能甚至还没有被发明出来。但是 INTMAX 是您可以使用 malloc 分配的最大块,将其一分为二只会让您更加灵活,并允许您分配非常大的数组。即使在那个时候,也有一些方法可以从系统中获取默认清零的大页面,因此 calloc 的效率问题不如 malloc 的问题。

如今,有了 size_t 和手边的函数原型(prototype),这只是 C 丰富历史的日常提醒。

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

相关文章:

c - 如何在C中60秒后关闭服务器套接字

c - 使用 free() 时为 "Heap corruption detected"

c - 没有 malloc 或 calloc 的 free() 函数

c - free()失败

C++ 字符串 char** 翻译

c - 将数据添加到闪存中的一个段怎么会搞砸程序的计时?

c - 编译后的 "Hello World"C 程序如何使用机器语言存储字符串?

创建包含 0 和 1 的二维数组

c - 使用 Windows Api 将字符串写入映射文件

c - 使用 malloc/calloc 初始化 char *tab[]