建議使用 Visual Studio 2017

C26167

 

發行︰ 2016年7月

如需 Visual Studio 2017 的最新文件請參閱 Visual Studio 2017 文件

警告 C26167: 釋放在函式 <func>的未保留的鎖定 <lock> 。

警告 C26167 類似 C26117 警告,除了確定較低。 例如,函式可能包含附註錯誤。

下列程式碼會產生C26167和 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  
}  
  

若要更正這則警告,請使用下列程式碼:

  
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);  
}  
  

顯示: