6. Conclusion

Ces quelques idées sur l'allocation de mémoire vous pousseront peut-être à définir une macro comme ceci :

#define new(var, nb) ((var) = malloc((nb) * sizeof(*(var))))

/* ... */
int *tableau;
new (tableau, N);
		

Nous aurions tendance à penser que cette manière de faire est à éviter. Cependant, je n'ai trouvé aucun exemple spectaculaire montrant qu'il ne faut pas le faire. Certaines constructions viennent à l'esprit, mais si la macro est bien écrite, cela doit fonctionner :

int *tableau;
tableau = new (tableau, N);
		

ou

int *tableau;
if (NULL == (tableau = new (tableau, N)))
  {
    /* Message d'erreur */
    exit (EXIT_FAILURE);
  }
		

Que penser de cette macro ? Est-elle révolutionnaire, ou est-il tellement évident de ne pas l'utiliser que nous ne voyons pas pourquoi ? J'hésite à vous la conseiller et j'en reste à la bonne vieille utilisation de malloc() qui a fait ses preuves.

création est mise à disposition sous un contrat Creative Commons