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.
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
;
}