Bagikan melalui


Peringatan C26167

Mungkin melepaskan kunci 'kunci' yang tidak dipantau dalam fungsi 'func'.

Peringatan C26167 menyerupan peringatan C26117 kecuali bahwa tingkat keyakinan lebih rendah. Misalnya, fungsi mungkin berisi kesalahan anotasi.

Contoh

Kode berikut akan menghasilkan C26167 dan C26110.

typedef struct _DATA {
    CRITICAL_SECTION cs;
} DATA;

_Releases_lock_(p->cs) void Leave(DATA* p) {
    LeaveCriticalSection(&p->cs); // OK
}
void ReleaseUnheldLock(DATA* p) { // Warning C26167
    int i = 0;
    Leave(p); // Warning C26110
}

Kode berikut akan memperbaiki peringatan ini.

typedef struct _DATA {
    CRITICAL_SECTION cs;
} DATA;

_Releases_lock_(p->cs) void Leave(DATA* p) {
    LeaveCriticalSection( &p->cs );
}

void ReleaseUnheldLock( DATA* p ) {
    EnterCriticalSection( &p->cs );
    int i = 0;
    Leave(p);
}