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)