Introduction

Quel meilleur endroit que cette introduction pour fixer les idées sur certaines méthodes de programmation sur les allocations mémoire ? Allouer la mémoire est le sujet traité par la première recette, aussi, nous ne nous étendrons pas sur ce point. Cependant, lorsque vous utilisez malloc(), vous pouvez rencontrer beaucoup de notations, justes, pratiques, fausses ou incorrectes.


#define VARIABLE_NB_ELEMENTS 10 
int *pointeur; 
pointeur = malloc (10 * sizeof (int));                    /* mauvais */ 
pointeur = malloc (VARIABLE_NB_ELEMENTS * sizeof (int));  /* correct */ 
pointeur = malloc (10 * sizeof *pointeur);                /* mauvais */ 
pointeur = malloc (VARIABLE_NB_ELEMENTS * sizeof *pointeur); 
                                                          /* juste   */ 
pointeur = (int *) malloc (10 * sizeof (int));            /* mauvais */ 
pointeur = (int *) malloc (VARIABLE_NB_ELEMENTS * sizeof (int)); 
                                                          /* mauvais */ 
pointeur = (int *) malloc (10);                           /* faux    */ 
 

D’autres déclinaisons de ces expressions existent, mais nous pouvons déjà remarquer trois points. D’abord, le cast, qui est nécessaire en C++ et qui l’était en C par le passé, est inutile et déconseillé aujourd’hui. En effet, il faut inclure le fichier d’en-têtes stdlib.h dans votre code, et quand le préprocesseur n’est pas content, il signifie que vous l’avez oublié.

Ensuite, il ne faut jamais mettre des nombres magiques dans le code, magiques parce que nous ne savons pas d’où...

Pour consulter la suite, découvrez le livre suivant :
couv_EI3CACT.png
60-signet.svg
En version papier
20-ecran_lettre.svg
En version numérique
41-logo_abonnement.svg
En illimité avec l'abonnement ENI
130-boutique.svg
Sur la boutique officielle ENI
Précédent
Transformer une chaîne en minuscules ou en majuscules
Suivant
Allouer de la mémoire