Compartilhar via


C26115

Aviso C26115: Falha ao tentar liberar o bloqueio <lock> na função <fun>.

A imposição de bloqueio sintaticamente o escopo do adquire e os pares de versão de bloqueio em programas C/C++ não são executados pelo idioma.Uma função pode enviar um efeito colateral de bloqueio fazendo uma alteração perceptível ao estado de simultaneidade.Por exemplo, uma função de wrapper de bloqueio incrementa o número de aquisições de bloqueio, ou a contagem de bloqueio, para um bloqueio fornecido.

É possível anotar uma função que tem um efeito colateral de adquirir um bloqueio ou bloquear a versão usando _Acquires_lock_ ou _Releases_lock_, respectivamente.Sem essas anotações, uma função é esperada não altere nenhuma contagem de bloqueio depois que ele retorna.Se o adquire e as versões não são equilibradas, será considerada órfãos.C26115 de aviso é emitido quando uma função apresenta um bloqueio órfã.

Exemplo

O exemplo a seguir gerenciar C26115 de aviso porque há um bloqueio órfão em uma função que não são anotadas com _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);
    }