C26167C26167

avertissement C26167 : libération de verrou non maintenu <verrou > dans la fonction <func >.warning C26167: Possibly releasing unheld lock <lock> in function <func>.

Avertissement ressemble à l’avertissement C26167 C26117 , sauf que le niveau de confiance est inférieur.Warning C26167 resembles warning C26117 except that the confidence level is lower. Par exemple, la fonction peut contenir des erreurs de l’annotation.For example, the function may contain annotation errors.

ExempleExample

Le code suivant génère C26167, ainsi que C26110.The following code will generate C26167, as well as 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  
}  

ExempleExample

Le code suivant corrige ces avertissements.The following code will correct these warnings.


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