什么是calloc(10,4)和calloc(1,40)之间的区别?
我看到了这种行为:
我看到了这种行为:
Thing** things = (Thing**)calloc(1, 10 * sizeof(Thing*));
// things[0] != 0
Thing** things = (Thing**)calloc(10, sizeof(Thing*));
// things[0] == 0
我希望了解为什么。编辑:失去理智是原因,现在两种方法都没有结果...至少让这个问题有趣一些,为什么calloc不像malloc一样只需要一个参数呢?
calloc(n, sizeof(Thing))
允许你分配超过SIZE_MAX
字节的内存,这在理论上是可能的。而n*sizeof(Thing)
永远不会大于SIZE_MAX
。因此,calloc
在理论上可以用来分配比malloc
更多的内存。 - Lundin