Belle façon de gérer malloc erreur sans vérifier si la valeur est NULL a été retournée après chaque appel de malloc?

Dans mon code presque chaque fonction a un ou plusieurs appels malloc, et chaque fois que je dois faire quelque chose comme:

char *ptr = (char *)malloc(sizeof(char) * some_int);
if (ptr == NULL) {
    fprintf(stderr, "failed to allocate memory.\n");
    return -1;
}

que quatre lignes de code supplémentaires et si j'ajoute à chaque fois que après j'utilise un malloc, la longueur de mon code va augmenter beaucoup.. donc, il y a un moyen élégant pour traiter ce problème?

Merci beaucoup!!

  • Si la longueur de votre code augmente beaucoup, vous devriez penser à pourquoi vous appelez malloc tellement. C'est probablement ce qui indique que vous êtes en essayant de traduire une langue différente idiomes en C plutôt qu'à l'aide de C correctement...
  • Notez que la conversion de la valeur de retour de malloc en C n'est pas nécessaire et peut en cacher une erreur que le compilateur aurait pris sans la fonte.
  • vous parlez de la (char *) droit? Ce genre d'erreurs est-ce à couvrir?
  • l'erreur se cachant advient-il si vous n'incluez pas <stdlib.h> ainsi à l'aide de la fonction sans un prototype. Le compilateur (à tort), ce qui suppose malloc() renvoie une valeur de type int et, sans le cast, se plaint avec une erreur à la tâche parce int* et int ne sont pas compatibles. Avec la fonte de forcer le compilateur à se taire ... masquage de l'omission de la droite #include.
InformationsquelleAutor Rachel | 2011-09-18