Discussion:Malloc

Le contenu de la page n’est pas pris en charge dans d’autres langues.
Une page de Wikipédia, l'encyclopédie libre.
Autres discussions [liste]
  • Admissibilité
  • Neutralité
  • Droit d'auteur
  • Article de qualité
  • Bon article
  • Lumière sur
  • À faire
  • Archives
  • Commons

Les tailles mémoire en C (et aussi en C++) sont exprimées en chars et non en octets. C'est important dans la mesure où le langage C impose uniquement une taille minimale aux types, y compris au type char, et non une taille fixe comme en Java. De fait, certains compilateurs C utilisent des chars de 9 bits, voire davantage (cf. la constante CHAR_BIT dans limits.h).

C'est la raison pour laquelle l'expression "sizeof(char)==1" est garantie d'être toujours vraie par la norme du langage C. De fait, l'expression :

   char * pointeur = malloc(20 * sizeof(char))

Pourrait s'écrire de manière équivalente :

   char * pointeur = malloc(20)

Sachant que dans les deux cas, la mémoire allouée a une taille de 20 chars et non 20 octets (en fait, sur des plateformes très exotiques, ce pourrait même être 90 octets).