Aracılığıyla paylaş


C26115

uyarı C26115: <func> işlevi içinde <lock> kilidini serbest bırakmak başarısız

Sözdizimsel olarak kapsamlı kilit zorlama Al ve kilit serbest çiftleri c/C++ programlarında dil tarafından gerçekleştirilmez.Bir işlev eşzamanlılık durumuna gözle görülür bir değişiklik yaparak bir kilitleme yan etkisine neden olabilir.Örneğin, bir kilit sarıcı işlevi kilit alımları sayısı veya verilen bir kilit için kilit sayısını artırır.

Bir kilit alımından veya kilit serbest bırakılmasından kaynaklanan bir yan etkiye sahip bir işlevi sırasıyla _Acquires_lock_ veya _Releases_lock_ kullanarak açıklayabilirsiniz.Bu tür ek açıklamalar olmadan, döndürüldükten sonra bir işlevin herhangi bir kilit sayısını değiştirmemesi beklenir.Alma ve serbest bırakmalar dengeli değil ise, artık olarak düşünülür.Bir işlev artık bir kiliti tanıttığında Uyarı C26115 verilir.

Örnek

Aşağıdaki örnek, uyarı C26115'ı oluşturur çünkü _Acquires_lock_ ile ek açıklaması yapılmayan bir işlevdeki artık 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);
    }