Dela via


Varning C26115

Det går inte att frigöra låset 'lock' i funktionen 'func'.

Anmärkningar

Tillämpning av syntaktiskt scope-baserade lås acquire och lås släpper par i C/C++-program utförs inte av språket. En funktion kan introducera en låsnings sidoeffekt genom att göra en observerbar ändring av samtidighetstillståndet. En låsomslutningsfunktion ökar till exempel antalet låsförvärv, eller antalet lås, för ett visst lås.

Du kan annotera en funktion som har en sidoeffekt från en låsaktivering eller låssläpp genom att använda _Acquires_lock_ respektive _Releases_lock_. Utan sådana anteckningar förväntas en funktion inte ändra något låsantal när den har returnerats. Om tilldelningar och frigörelser inte balanseras anses de vara utan samband. Varning C26115 utfärdas när en funktion introducerar ett överblivet lås.

Example

I följande exempel genereras varning C26115 eftersom det finns ett överblivet lås i en funktion som inte är kommenterad med _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);
}