다음을 통해 공유


경고 C26115

함수 'func'에서 잠금 'lock'을 해제하지 못했습니다.

C/C++ 프로그램에서 구문적으로 범위가 지정된 잠금 획득 및 잠금 릴리스 쌍의 적용은 언어에 의해 수행되지 않습니다. 함수가 현재 상태를 크게 수정함으로써 잠금 부작용이 발생할 수 있습니다. 예를 들어 잠금 래퍼 함수는 지정된 잠금에 대해 잠금 획득 횟수 또는 잠금 수를 증분합니다.

_Acquires_lock_ 또는 _Releases_lock_을 사용하면 각각 잠금 획득 또는 잠금 해제로 인한 부작용이 있는 함수를 주석 처리할 수 있습니다. 이러한 주석 없이는 함수가 반환 후 잠금 수를 변경하지 않을 것으로 예상됩니다. 획득 및 릴리스가 균형이 맞지 않으면 분리된 것으로 간주됩니다. 함수가 고아 잠금을 일으키면 경고 C26115가 발생합니다.

예시

다음 예제에서는 주석 _Acquires_lock_이 추가되지 않은 함수에 분리된 잠금이 있으므로 경고 C26115를 생성합니다.

typedef struct _DATA
{
    CRITICAL_SECTION cs;
} DATA;

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

    if (flag)
        return; // Warning C26115

    LeaveCriticalSection(&p->cs);
}