Lire en anglais

Partager via


Avertissement C28198

Éventuellement fuite de mémoire en raison d’une exception.

Cet avertissement indique que la mémoire allouée n’est pas libérée une fois qu’une exception est levée. L’instruction à la fin du chemin d’accès peut déclencher une exception. La mémoire a été transmise à une fonction qui a peut-être enregistré une copie pour être libérée ultérieurement.

Cet avertissement est similaire à l’avertissement C28197. Les annotations recommandées pour une utilisation avec avertissement C28197 peuvent également être utilisées ici.

Exemple

L'exemple de code suivant génère cet avertissement :

char *p1 = new char[10];
char *p2 = new char[10];

test(p1);   // does not save a copy of p

delete[] p2;
delete[] p1;

L'exemple de code suivant évite cet avertissement :

char *p1 = new char[10];
char *p2 = NULL;

test(p1);   // does not save a copy of p
try {
    p2 = new char[10];
} catch (std::bad_alloc *e) {
    // just handle the throw
    ;
}