可能重复:
c malloc 和 calloc 的区别
为什么 calloc 需要两个参数而 malloc 只需要一个参数?
我注意到许多 C 函数调用特别是那些处理内存或文件操作的函数,但并非所有函数都使用这两个参数。例如 malloc 传递了一个参数,即所需内存空间的大小(以字节为单位)。另一方面,Calloc 被传递了两个参数,一个元素的字节大小和元素的数量(大小和 nmem)。还有其他函数也使用这些大小和 nmem 参数。
本质上,calloc 调用将分配与调用 malloc(nmem size) 相同的内存量,所以真正发生的只是星号 ( ) 被替换为逗号 (,)。至少这是我能从我工作的更高层次上知道的全部内容。我看不出调用 calloc(1, nmem size)、calloc(nmem size, 1) 或 calloc(nmem, size) 有什么不同。
是否在较低级别上实际发生了某些事情,使得调用例如 calloc(1, nmem*size) 与 calloc(nmem, size) 根本不同?
编辑:我知道 calloc 和 malloc 之间的功能区别。我对为什么参数存在差异感兴趣。还有其他函数使用 2 个大小参数作为总大小(fread、fwrite 等)。我不关心具体的函数,而是为什么函数中使用的总大小有两个参数,而实际上总大小变成了两个参数相乘。我发现大多数时候,当我使用这些函数时,我在“size”参数中使用我需要的大小,在“nmem”(有时是“count”等)参数中使用“1”。