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