Condividi tramite


C26115

warning C26115: Non riuscita del rilascio del blocco <lock> nella funzione <func>.

L'imposizione in ambito sintattico di acquisire e rilasciare il blocco in coppie nei programmi C/C++ non viene eseguita dal linguaggio.Una funzione può introdurre un effetto collaterale di blocco apportando una modifica osservabile allo stato della concorrenza.Ad esempio, una funzione wrapper di blocco incrementa il numero delle acquisizioni di blocco, o il conteggio dei blocchi, per un blocco specificato.

È possibile annotare una funzione che ha un effetto collaterale da un blocco acquisito o rilasciato usando rispettivamente _Acquires_lock_ o _Releases_lock_.Senza queste annotazioni, una funzione si aspetta di non modificare alcun conteggio dei blocchi dopo che ritorna.Se le acquisizioni e i rilasci non sono equilibrati, sono considerate orfane.L'avviso C26115 viene generato quando una funzione introduce un blocco orfano.

Esempio

Nell'esempio seguente viene generato l'avviso C26115 perché c'è un blocco orfano in una funzione che non viene annotata con _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);
    }