Поделиться через


C28198

предупреждение C28198: Возможна утечка памяти вследствие исключения.

Данное предупреждение указывает, что после возникновения исключения выделенная память не была освобождена.Инструкция в конце пути может вызвать исключение.Память была передана функции, которая могла сохранить копию, которую необходимо освободить позже.

Это предупреждение очень похоже на предупреждение C28197.Аннотации, которые рекомендованы для использования с предупреждением C28197, можно также использовать здесь.

Пример

Это предупреждение появляется в следующем примере кода:

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

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

delete[] p2;
delete[] p1;

В следующем примере кода показано, как избежать появления данного предупреждения:

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