C26115
警告 C26165: 可能無法釋放<func>函式中的<lock>鎖定 。
在語法上是範圍鎖定的執行緒 取得 和鎖定 C/C++ 程式的發行沒有由語言執行。 函式可以藉由對並行狀態的可預見值的變更產生新的鎖定副作用。 例如,鎖定包裝函式將鎖定獲取數目或鎖定計數,並使用指定的鎖定。
您可以使用 _Acquires_lock_ 或 _Releases_lock_,您也可以分別 Pragma 配置從鎖定的副作用 (Side Effect) 取得或鎖定版本的函式。 如果沒有這種附註,在這種情況下,在它傳回之後,函式預期不會變更任何鎖定計數。 如果取得與釋放不平恆,它們會變為孤立。 當函式採用一個單獨的鎖定時,會產生警告C26115 。
範例
下列範例會產生警告 C26115,因為未加註 _Acquires_lock_的函式來定義失去關聯的鎖定。
typedef struct _DATA
{
CRITICAL_SECTION cs;
} DATA;
void FailToReleaseLock(int flag, DATA* p)
{
EnterCriticalSection(&p->cs);
if (flag)
return; // Warning C26115
LeaveCriticalSection(&p->cs);
}