次の方法で共有


C26115

警告 C26115: 関数 <func> でロック <ロック> の解放が失敗します

構文上のスコープ ロックは適用 し、 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);
    }