Compartir a través de


C28113

advertencia C28113: Obtener acceso a una variable local a través de una función interbloqueada

El controlador utiliza una rutina de compatibilidad exec de Interlocked, por ejemplo InterlockedDecrement, para tener acceso a una variable local.

Aunque los controladores están permitidos para pasar la dirección de una variable local a otra función y, a continuación, utilizar una función de bloqueo para funcionar en esa variable, es importante comprobar que la pila no cambia al disco inesperadamente y que la variable tiene el tiempo correcto de vida en todos los subprocesos que podrían utilizarla.

Ejemplo

Normalmente, el valor devuelto de una rutina de compatibilidad ejecutiva de interbloqueo se utiliza en cálculos posteriores, en lugar de los argumentos de entrada.Además, las rutinas de interbloqueo protegen sólo el primer argumento (de la izquierda).Mediante una rutina de interbloqueo de esta manera no se protege el valor de global, además de que no responde a ningún propósito.

InterlockedExchange(&local, global)

El siguiente formato tiene el mismo efecto en los datos y tiene acceso seguro a la variable global.

local = InterllockedExchange(&global, global)