Partilhar via


C26115

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

Imposição de bloqueio sintaticamente com escopo adquirir e lock release pares em programas C/C++ não é executada pelo idioma.Uma função pode introduzir um efeito colateral bloqueio fazendo uma modificação observável o 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 de um bloqueio determinado.

Você poderá anotar uma função que tem um efeito colateral de um bloqueio de adquirir ou bloquear o lançamento usando _Acquires_lock_ ou _Releases_lock_, respectivamente.Sem essas anotações, espera-se uma função para não alterar qualquer contagem de bloqueio após ela retornar.Se adquire e versões não são balanceados, eles são considerados órfãos.C26115 de aviso é emitido quando uma função apresenta um bloqueio órfão.

Exemplo

O exemplo a seguir gera o aviso de C26115, porque há um bloqueio órfão em uma função que não é anotada 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);
    }