可能重复:
c difference between malloc and calloc
Why does calloc require two parameters and malloc just one?在C函数中需要具有“nmem”和“size”参数吗?
我与许多C函数注意到这个呼吁特别是那些与内存或文件操作处理,但不是所有的人同时使用参数。例如,malloc传递一个参数,即所需内存空间的大小(以字节为单位)。另一方面,Calloc传递两个参数,一个元素的字节大小和元素数量(大小和nmem)。还有其他函数也使用这些大小和nmem参数。
本质上释放calloc调用将分配相同的内存量调用malloc(NMEM 大小),这样所有的真实的情况是星号()被替换为逗号(,)。至少这是我从更高层面上可以看出我正在工作的一切。我没有看到与调用calloc(1,nmem 大小),calloc(nmem大小,1)或calloc(nmem,size)不同之处。
有什么实际的,使呼叫例如释放calloc一个较低的水平发生(1,NMEM *尺寸)释放calloc(NMEM,大小)根本不同?
编辑:我知道calloc和malloc之间的功能差异。我感兴趣的是为什么参数有差异。还有其他的功能,使用2个大小参数的总大小(fread,fwrite等)。我并不关心具体函数,而是为什么当函数中使用的总大小有两个参数时,实际上总大小成为两个参数的乘积。我发现大部分时间使用这些函数时,我在“size”参数中使用了我需要的大小,而在“nmem”参数中使用了“1”(有时是“count”等)参数。
内存对齐是改善(上平台这两个参数表格。 – wallyk
至于'malloc()'和'calloc()',你会发现一个互动的区别在这里解释:http://stackoverflow.com/a/1585987/694576 ... - 无论如何,你会介意我们指向其他函数,除了后两者,你还记得。 – alk
@Paciv它不是重复的那个问题,它的答案没有解决参数数量的差异。 –