问我看到像这样的代码
char *p = malloc(strlen(s) + 1); strcpy(p, s);难道不应该是malloc((strlen(s) + 1) * sizeof(char))?
答从来没有必要乘以sizeof(char),因为sizeof(char)根据定义,正好是 1。(另一方面,乘以sizeof(char)并无坏处,有时也可能通过引入size_t到表达式中而有益;参见问题 7.15。) 另请参见问题 8.9 和 8.10。
参考文献:ISO Sec. 6.3.3.4
H&S Sec. 7.5.2 p. 195