C26165
upozornění C26165: nezdaří uvolnit zámek <lock> ve funkci <func>.
Upozornění se podobá upozornění C26165 C26115 je však nižší úroveň spolehlivosti.Funkce může například obsahovat chyby poznámky.
Příklad
Následující kód vygeneruje varování C26165.
_Create_lock_level_(LockLevelOne);
_Create_lock_level_(LockLevelTwo);
struct LockLevelledStruct
{
_Has_lock_level_(LockLevelOne) CRITICAL_SECTION a;
_Has_lock_level_(LockLevelTwo) CRITICAL_SECTION b;
};
_Lock_level_order_(LockLevelOne, LockLevelTwo);
_Acquires_lock_(s->b) void GetLockFunc(LockLevelledStruct* s)
{
EnterCriticalSection(&s->b);
}
void testLockLevelledStruct(LockLevelledStruct* s) // Warning C26165
{
EnterCriticalSection(&s->a);
GetLockFunc(s);
LeaveCriticalSection(&s->a);
}
Opravit toto upozornění, změňte v následujícím příkladu.
_Create_lock_level_(LockLevelOne);
_Create_lock_level_(LockLevelTwo);
struct LockLevelledStruct
{
_Has_lock_level_(LockLevelOne) CRITICAL_SECTION a;
_Has_lock_level_(LockLevelTwo) CRITICAL_SECTION b;
};
_Lock_level_order_(LockLevelOne, LockLevelTwo);
_Acquires_lock_(s->b) void GetLockFunc(LockLevelledStruct* s)
{
EnterCriticalSection(&s->b);
}
_Releases_lock_(s->b) void ReleaseLockFunc(LockLevelledStruct* s)
{
LeaveCriticalSection(&s->b);
}
void testLockLevelledStruct(LockLevelledStruct* s) // OK
{
EnterCriticalSection(&s->a);
GetLockFunc(s);
ReleaseLockFunc(s);
LeaveCriticalSection(&s->a);
}