calloc() 和 NULL

calloc() and NULL

我知道 calloc 分配内存并将零写入每个单元格,所以我的问题是: 在向单元格写入 NULL 时使用 calloc 或使用 malloc 和 运行 之间有区别吗? calloc 的零是否等同于 NULL?

不,它们并不总是等同,但在大多数流行的机器上你会没事的。 calloc 将全零的位模式写入分配的内存,但空指针值在某些机器上可能不是全零(或者甚至只是某些机器上的某些类型)。

查看 C 常见问题解答的 Null Pointers 部分以获得大量信息。

NULL 不能保证所有位都设置为 0,即使它总是与整数常量 0 比较也是如此。

Calloc 会将所有位设置为 0,与 memset 调用相同。允许结果值不等于 NULL。

因此它们不等价。