Oui, c'est une question de style, car vous vous attendez à ce que sizeof(char)
en soit toujours un. D'un autre côté, utiliser sizeof(foo)
lors de l'exécution d'un malloc
est important et, surtout, il rend le code auto-documenté.
Aussi mieux pour la maintenance, peut-être. Si vous passez de char
à wchar
, vous souhaitez passer à
wchar *p = malloc(sizeof(wchar) * (len + 1));
sans beaucoup de réflexion. Alors que la conversion de l'instruction char *p = malloc( len + 1 );
nécessiterait plus de réflexion. Il s'agit de réduire les frais généraux.
Et comme @Nyan suggère dans un commentaire, vous pouvez aussi faire
type *p = malloc(sizeof(*p) * (len + 1));
pour les chaînes terminées par zéro et
type *p = malloc(sizeof(*p) * len));
pour les tampons ordinaires.
Dupliquer de http://stackoverflow.com/questions/1011806/is-it-necessary-to-multiply-by-sizeof-char-when -manipulating-memory bien que je ne sois pas d'accord avec la réponse acceptée (je préfère omettre sizeof (char)) – user85509