Sdílet prostřednictvím


C26115

upozornění C26115: neúspěšný pokus uvolnit zámek <zámek> ve funkci <funkce>.

Vynucení syntakticky vymezených párů zámků acquire a release v programech jazyka C/C++ není prováděno jazykem.Funkce může zavést vedlejší účinek uzamčení provedením pozorovatelné úpravy stavu souběžnosti.Například funkce pro obalování zámků zvyšuje počet pořízení zámků nebo počet zámků daného zámku.

Funkci, která má vedlejší účinek z operací lock acquire nebo lock release, lze přidat poznámku pomocí klíčového slova _Acquires_lock_, resp. _Releases_lock_.Bez těchto poznámek se od funkce očekává, že po dokončení neprovede žádnou změnu počtu zámků.Nejsou-li operace acquire a release v rovnováze, jsou považovány za osamocené.Upozornění C26115 je generováno, zavede-li funkce osamocený zámek.

Příklad

Následující příklad generuje upozornění C26115, protože se ve funkci bez poznámky zadané klíčovým slovem _Acquires_lock_ vyskytne osamocený zámek.

    typedef struct _DATA 
    {
        CRITICAL_SECTION cs;
    } DATA;

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

        if (flag)
            return; // Warning C26115

        LeaveCriticalSection(&p->cs);
    }