Uwaga
Dostęp do tej strony wymaga autoryzacji. Może spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Być może zwalnianie blokady bez blokady "lock" w funkcji "func".
Ostrzeżenie C26167 przypomina ostrzeżenie C26117 z wyjątkiem tego, że poziom ufności jest niższy. Na przykład funkcja może zawierać błędy adnotacji.
Przykłady
Poniższy kod spowoduje wygenerowanie C26167 i 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
}
Poniższy kod poprawi te ostrzeżenia.
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);
}