--- description: "Learn more about: Warning C26115" title: Warning C26115 ms.date: 11/04/2016 f1_keywords: ["C26115"] helpviewer_keywords: ["C26115"] ms.assetid: 3977a2bb-d1fe-4510-89dd-07fdc69e911c --- # Warning C26115 > Failing to release lock '*lock*' in function '*func*'. Enforcement of syntactically scoped lock *acquire* and lock *release* pairs in C/C++ programs isn't performed by the language. A function may introduce a locking side effect by making an observable modification to the concurrency state. For example, a lock wrapper function increments the number of lock acquisitions, or lock count, for a given lock. You can annotate a function that has a side effect from a lock acquire or lock release by using `_Acquires_lock_` or `_Releases_lock_`, respectively. Without such annotations, a function is expected not to change any lock count after it returns. If acquires and releases aren't balanced, they're considered to be *orphaned*. Warning C26115 is issued when a function introduces an orphaned lock. ## Example The following example generates warning C26115 because there's an orphaned lock in a function that isn't annotated with `_Acquires_lock_`. ```cpp typedef struct _DATA { CRITICAL_SECTION cs; } DATA; void FailToReleaseLock(int flag, DATA* p) { EnterCriticalSection(&p->cs); if (flag) return; // Warning C26115 LeaveCriticalSection(&p->cs); } ```