Partager via


C26115

avertissement C26115 : Échec pour libérer le verrou <lock> dans la fonction <func>.

La mise en place d'un verrou à portée limitée syntaxiquement obtient et verrouille libère les paires dans des applications C/C++ n'est pas effectué par le langage.Une fonction peut introduire un effet secondaire verrouillant en apportant une modification observable à l'état d'accès concurrentiel.Par exemple, une fonction wrapper de verrou incrémente le nombre d'entrées de verrou, ou le nombre de verrous, pour un verrou fourni.

Vous pouvez annoter une fonction qui a un effet secondaire à partir de l'acquisition ou la libération d'un verrou à l'aide de _Acquires_lock_ ou _Releases_lock_, respectivement.Sans de telles annotations, il est prévu qu'une fonction ne modifie pas le nombre de verrous après qu'elle ait été retournée.Si l'acquisition et la libération ne sont pas équilibrées, elles sont considérées comme orphelines.L'avertissement C26115 est émis lorsque une fonction présente un verrou orphelin.

Exemple

L'exemple suivant génère l'avertissement C26115 car il existe un verrou orphelin dans une fonction qui n'est pas annotée avec _Acquires_lock_.

    typedef struct _DATA 
    {
        CRITICAL_SECTION cs;
    } DATA;

    void FailToReleaseLock(int flag, DATA* p) 
    {
        EnterCriticalSection(&p->cs); 

        if (flag)
            return; // Warning C26115

        LeaveCriticalSection(&p->cs);
    }