Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować się zalogować lub zmienić katalog.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Być może zwalnianie blokady bez blokady "lock" w funkcji "func".
Uwagi
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);
}