C28105C28105

Ostrzeżenie C28105: przeciek zasobu z powodu wyjątkuwarning C28105: Leaking resource due to an exception

Określony zasób nie jest zwalniany, gdy zostanie zgłoszony wyjątek.The specified resource is not freed when an exception is raised. Instrukcja określona przez ścieżkę może zgłosić wyjątek.The statement specified by the path can raise an exception. To ostrzeżenie przypomina C28103ostrzegawczy, z tą różnicą, że w tym przypadku występuje wyjątek.This warning is similar to warning C28103, except that in this case an exception is involved.

PrzykładExample

Poniższy przykład kodu generuje to ostrzeżenie:The following code example generates this warning:

res = KeSaveFloatingPointState(buffer);

res = AllocateResource(Resource);
char *p2 = new char[10]; // could throw

delete[] p2;
FreeResource(Resource)

Poniższy przykład kodu pozwala uniknąć tego ostrzeżenia:The following code example avoids this warning:

res = AllocateResource(Resource);
char *p2;

try {
    p2 = new char[10];
} catch (std::bad_alloc *e) {
    // just handle the throw
    ;
}
FreeResource(Resource)