Delen via


Waarschuwing C26115

Het niet vrijgeven van vergrendeling 'lock' in functie 'func'.

Opmerkingen

Het afdwingen van syntactisch omgeven acquireren en loslaten van koppels in C/C++-programma's wordt niet uitgevoerd door de taal. Een functie kan een neveneffect van de vergrendeling veroorzaken door een waarneembare wijziging aan te brengen in de gelijktijdigheidsstatus. Met een vergrendelingswikkelfunctie wordt bijvoorbeeld het aantal overnames van vergrendelingen of het aantal vergrendelingen voor een bepaalde vergrendeling verhoogd.

U kunt aantekeningen maken voor een functie die een neveneffect heeft van een vergrendeling of vergrendelingsvrijgave door _Acquires_lock_ of _Releases_lock_ te gebruiken, respectievelijk. Zonder dergelijke aantekeningen wordt verwacht dat een functie geen vergrendelingsaantal wijzigt na terugkeer. Als verkrijgingen en releases niet in balans zijn, worden ze beschouwd als verweesd. Waarschuwing C26115 wordt uitgegeven wanneer een functie een zwevende vergrendeling introduceert.

Example

In het volgende voorbeeld wordt waarschuwing C26115 gegenereerd omdat er een zwevende vergrendeling is in een functie die niet is geannoteerd met _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);
}