C28198

C28198 de aviso: Possivelmente vazamento de memória devido a uma exceção.

Este aviso indica que a memória alocada não está sendo liberada após uma exceção é gerada.A instrução no final do caminho pode lançar uma exceção.A memória foi passada para uma função que pode ter uma cópia salvo a ser liberada posteriormente.

Esse aviso é muito semelhante ao aviso C28197.As anotações que são recomendadas para uso com aviso de C28197 também podem ser usadas aqui.

Exemplo

O exemplo de código gera este aviso:

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

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

delete[] p2;
delete[] p1;

O exemplo de código a seguir evita este aviso:

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