我注意到许多C函数调用尤其是涉及内存或文件操作的函数调用,并不都使用两个参数。例如,malloc只传递一个参数,即所需内存空间的字节数。另一方面,calloc传递了两个参数,即元素大小(size)和元素数量(nmem)。还有其他使用这些size和nmem参数的函数。
从本质上讲,calloc调用将分配与调用malloc(nmemsize)相同的内存量,因此实际上发生的是将星号()替换为逗号(,)。至少在我工作的较高层次上,我看不出调用calloc(1, nmemsize)、calloc(nmemsize, 1)或calloc(nmem, size)之间的区别。
在更低层面上是否有实际发生的事情,使得例如calloc(1, nmem*size)和calloc(nmem, size)之间存在根本性差异?
编辑:我知道calloc和malloc之间的功能区别。我感兴趣的是参数之间的差异。还有其他使用2个大小参数作为总大小的函数(如fread,fwrite等)。我关心的不是具体的函数,而是为什么在函数中有两个用于总大小的参数,当实质上总大小变成这两个参数相乘时。大多数情况下,我使用需要的“size”参数和“nmem”(有时是“count”等)参数的“1”。
malloc()
和calloc()
,您可以在这里找到有趣的差异解释:https://dev59.com/1XI_5IYBdhLWcg3wEexu#1585987 ...无论如何,您能否指出您考虑的除后两个函数之外的其他函数。 - alk