La fonction malloc
alloue octets et prend en entrée le nombre d'octets que vous souhaitez allouer. L'opérateur sizeof
renvoie le nombre d'octets pour un type donné. Dans ce cas, un char
est de 1 octet, mais dans le cas d'un int
, il est très probable que 4 octets ou double
correspondent à 8 octets. L'expression n * sizeof(char)
convertit le nombre de char
en nombre d'octets souhaités.
Dans le cas illustré, en utilisant char
, le calcul du nombre d'octets est probablement pas nécessaire, mais il faut le faire car il aide à transmettre votre intention.
Qu'est-ce que l'expression fait alloue la quantité de mémoire souhaitée nécessaire pour maintenir au plus n
nombre de char
« s et vous retourner un pointeur, buf
, au début de cette mémoire allouée.
Il n'est pas nécessaire, parce que 'sizeof (char)' est ([toujours 1] http://stackoverflow.com/questions/2215445/are-there-machines-where- sizeofchar-1). Cependant, certaines personnes préfèrent l'uniformité; il est évalué à la compilation, donc peu importe. –
C'est toujours 1 dans les compilateurs compatibles C99, que vous devriez toujours prendre avec un grain de sel. Même les compilateurs les plus modernes ne sont pas "entièrement" conformes à C99. –
@David, c'est nécessaire depuis [C89] (http://flash-gordon.me.uk/ansi.c.txt), sinon avant. –