Vérifier que realloc s'est bien passé ?

L’auteur de ce sujet a trouvé une solution à son problème.
Auteur du sujet

Bonjour,

Selon vous, si je souhaite agrandir un tableau à l’aide de realloc, est-ce pertinent de vérifier que realloc ne retourne pas NULL ?

client* add_client(client* p, int* n)   // n : nombre de clients dans le tableau p
{
    client* result = (client*) realloc(p, (*n + 1) * sizeof(client));
    
    if (result != NULL)
    {
        (*n)++;
    }
    
    return result;
}
Auteur du sujet

Salut,

Selon vous, si je souhaite agrandir un tableau à l’aide de realloc, est-ce pertinent de vérifier que realloc ne retourne pas NULL ?

info-matique

C’est même indispensable. ;)

Taurre

D’accord, mais pourquoi ? Que pourrait-il se passer qui fait que realloc échoue ? Quelle erreur renvoyer à l’utilisateur final ?

Cette réponse a aidé l’auteur du sujet

D’accord, mais pourquoi ? Que pourrait-il se passer qui fait que realloc échoue ?

info-matique

Typiquement, realloc() échouera dans le cas où il n’y a plus de mémoire disponible ou si la mémoire est corrompue.

Quelle erreur renvoyer à l’utilisateur final ?

info-matique

Cela dépend des cas. En règle générale, si c’est de la mémoire nécessaire au fonctionnement du programme (comprendre : si tu n’obtiens pas cette mémoire, ton programme ne peut rien faire), la meilleure solution est de quitter immédiatement à l’aide de la fonction exit(). Si, en revanche, elle est optionnelle (par exemple dans le cas d’un programme de traitement d’image qui n’arrive pas à charger une image, c’est embêtant, mais cela n’empêche pas le programme lui-même de tourner) alors un message d’erreur laisser à l’utilisateur sans stopper l’exécution du programme est préférable.

Pour le message en lui-même, tu peux te contenter de perror("realloc") ou bien être plus précis, c’est comme tu le sens. ;)

#JeSuisArius

+0 -0
Vous devez être connecté pour pouvoir poster un message.
Connexion

Pas encore inscrit ?

Créez un compte en une minute pour profiter pleinement de toutes les fonctionnalités de Zeste de Savoir. Ici, tout est gratuit et sans publicité.
Créer un compte