Aracılığıyla paylaş


Uyarı C26115

'func' işlevinde kilit 'lock' serbest bırakılamıyor.

Açıklamalar

C/C++ programlarında sağlam kapsamlı kilit alma ve kilitleme yayın çiftlerinin uygulanması dil tarafından gerçekleştirilmiyor. İşlev, eşzamanlılık durumunda gözlemlenebilir bir değişiklik yaparak kilitleme yan etkisine neden olabilir. Örneğin, bir kilit sarmalayıcı işlevi belirli bir kilit için kilit alma sayısını veya kilit sayısını artırır.

Sırasıyla veya _Acquires_lock_kullanarak _Releases_lock_ kilit alma veya kilitleme yayınından yan etkisi olan bir işleve açıklama ekleyebilirsiniz. Bu tür ek açıklamalar olmadan, işlevin döndürdüğü kilit sayısını değiştirmemesi beklenir. Almalar ve sürümler dengeli değilse, yalnız bırakılmış olarak kabul edilir. Bir işlev yalnız bırakılmış bir kilit tanıttığında C26115 uyarısı verilir.

Örnek

Aşağıdaki örnek C26115 uyarısını oluşturur çünkü bir işlevde ile _Acquires_lock_açıklama eklenmemiş yalnız bırakılmış bir kilit vardır.

typedef struct _DATA
{
    CRITICAL_SECTION cs;
} DATA;

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

    if (flag)
        return; // Warning C26115

    LeaveCriticalSection(&p->cs);
}