8.26 calloc() 和 malloc() 有什么区别?利用 calloc 的零填充功能安全吗? free() 可以释放 calloc() 分配的内存吗, 还是需要一个 cfree()?

calloc(m, n) 本质上等价于
    p = malloc(m * n);
    memset(p, 0, m * n);

填充的零是全零, 因此不能确保生成有用的空指针值或浮点零值  (参见 第 5 章)。 free() 可以安全地用来释放 calloc() 分配的内存。

参考资料: [ISO, Sec. 7.10.3 to 7.10.3.2]; [H&S, Sec. 16.1 p. 386, Sec. 16.2 p. 386]; [PCS, Sec. 11 pp. 141,142]。

翻译朱群英、孙云, LaTeX2HTML 编译 朱群英 (2005-06-23)