Да, это вопрос стиля, потому что вы ожидаете, что sizeof(char)
всегда будет один.
С другой стороны, это очень большая идиома - использовать sizeof(foo)
при выполнении malloc
, и что наиболее важно, это делает код самодокументирующимся.
Также лучше для обслуживания, возможно. Если бы вы переключались с char
на wchar
, вы бы переключились на
wchar *p = malloc( sizeof(wchar) * ( len + 1 ) );
без особых раздумий. Принимая во внимание, что преобразование заявления char *p = malloc( len + 1 );
потребовало бы большего количества размышления. Это все о сокращении умственных накладных расходов.
И, как предлагает @Nyan в комментарии, вы также можете сделать
type *p = malloc( sizeof(*p) * ( len + 1 ) );
для строк с нулевым символом в конце и
type *p = malloc( sizeof(*p) * len ) );
для обычных буферов.