8.11 我見到了這樣的代碼  char *p = malloc(strlen(s) + 1); strcpy(p, s);  難道不應該是 malloc((strlen(s) + 1) * sizeof(char))?

永遠也不必乘上 sizeof(char), 因為根據定義, sizeof(char) 嚴格為1。 另一方面, 乘上 sizeof(char) 也沒有害處, 有時候還可以幫忙為表達式 引入 size_t 類型。 參見問題 8.5

參考資料: [ISO, Sec. 6.3.3.4]; [H&S, Sec. 7.5.2 p. 195]。

翻譯朱群英、孫雲, LaTeX2HTML 編譯 朱群英 (2005-06-23)