Freigeben über


Warnung C26115

Fehler beim Loslassen der Sperre "Lock" in der Funktion "func".

Die Erzwingung syntaktisch beschränkter Sperrsperren, die Veröffentlichungspaare in C/C++-Programmen abrufen und sperren, wird von der Sprache nicht ausgeführt. Eine Funktion kann einen Sperr-Nebeneffekt verursachen, indem eine feststellbare Änderung am Parallelitätszustand vorgenommen wird. Beispielsweise erhöht eine Sperrwrapperfunktion die Anzahl der Sperreskäufe oder die Anzahl der Sperren für eine bestimmte Sperre.

Sie können eine Funktion kommentieren, die einen Nebeneffekt von einer Sperre hat, indem Sie die Sperre abrufen _Acquires_lock_ oder freigeben._Releases_lock_ Ohne solche Anmerkungen wird erwartet, dass eine Funktion nach der Rückgabe keine Sperranzahl mehr ändert. Wenn Erwerbe und Veröffentlichungen nicht ausgeglichen sind, gelten sie als verwaist. Warnung C26115 wird ausgegeben, wenn eine Funktion eine verwaiste Sperre einführt.

Beispiel

Im folgenden Beispiel wird die Warnung C26115 generiert, da eine verwaiste Sperre in einer Funktion vorhanden ist, die nicht mit _Acquires_lock_Anmerkungen versehen ist.

typedef struct _DATA
{
    CRITICAL_SECTION cs;
} DATA;

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

    if (flag)
        return; // Warning C26115

    LeaveCriticalSection(&p->cs);
}