Freigeben über


Warnung C26167

Möglicherweise wird die nicht beibehaltene Sperre "Lock" in funktion "func" freigegeben.

Warnung C26167 ähnelt der Warnung C26117, mit der Ausnahme, dass das Konfidenzniveau niedriger ist. Die Funktion kann z. B. Anmerkungsfehler enthalten.

Beispiele

Der folgende Code generiert C26167 und C26110.

typedef struct _DATA {
    CRITICAL_SECTION cs;
} DATA;

_Releases_lock_(p->cs) void Leave(DATA* p) {
    LeaveCriticalSection(&p->cs); // OK
}
void ReleaseUnheldLock(DATA* p) { // Warning C26167
    int i = 0;
    Leave(p); // Warning C26110
}

Der folgende Code korrigiert diese Warnungen.

typedef struct _DATA {
    CRITICAL_SECTION cs;
} DATA;

_Releases_lock_(p->cs) void Leave(DATA* p) {
    LeaveCriticalSection( &p->cs );
}

void ReleaseUnheldLock( DATA* p ) {
    EnterCriticalSection( &p->cs );
    int i = 0;
    Leave(p);
}