Partager via


C26167

avertissement C26167 : Possibilité de libérer le verrou <lock> dans la fonction <func>.

L'avertissement C26167 ressemble à l'acertissement C26117, excepté que le niveau de confiance est plus bas.Par exemple, la fonction peut contenir des erreurs d'annotation.

Exemple

Le code suivant génère l'avertissement C26167, ainsi que le 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
} 

Le code suivant corrigera ces avertissements.

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