safebuffers
Específicos de Microsoft
Indica al compilador que no inserte comprobaciones de seguridad de saturación del búfer para una función.
__declspec( safebuffers )
Comentarios
La opción del compilador /GS hace que el compilador para comprobar las saturaciones del búfer insertar comprobaciones de seguridad en la pila.Se describen los tipos de estructuras de datos que son aptos para comprobaciones de seguridad en /GS (Comprobación de seguridad del búfer).Para obtener más información sobre la detección de saturación del búfer, vea Comprobaciones de seguridad exhaustiva del compilador en el sitio web de MSDN.
Un análisis manual experto de revisión de código o externo puede determinar que una función es segura de una saturación del búfer.En ese caso, puede suprimir las comprobaciones de seguridad para una función aplicando la palabra clave dedeclspec(safebuffers) de a la declaración de función.
Precaución |
---|
Las comprobaciones de seguridad del búfer proporcionan la seguridad importante y tienen un efecto no significativo en el rendimiento.Por tanto, se recomienda no los suprime, excepto en el caso poco frecuente donde es importante el rendimiento de una función crítica y la función se sabe que ser segura. |
Funciones inline
Una función principal puede utilizar una palabra clave de la inclusión para insertar una copia de una función secundaria.Si la palabra clave dedeclspec(safebuffers)de se aplica a una función, detección de saturación del búfer se suprime para esa función.Sin embargo, la inclusión afecta a la palabra clave dedeclspec(safebuffers)de las maneras siguientes.
Suponga que la opción del compilador /GS está especificada para ambas funciones, pero la función principal especifica la palabra clave dedeclspec(safebuffers)de.Las estructuras de datos en la función secundaria crean apto para comprobaciones de seguridad, y la función no suprime las comprobaciones.En este caso:
Especifique la palabra clave de __forceinline en la función secundaria para hacer que el compilador en línea que funciona independientemente de las optimizaciones del compilador.
Dado que la función secundaria es apto para comprobaciones de seguridad, las comprobaciones de seguridad también se aplican a la función principal aunque especifica la palabra clave dedeclspec(safebuffers)de.
Ejemplo
El código siguiente muestra cómo utilizar la palabra clave dedeclspec(safebuffers)de.
// compile with: /c /GS
typedef struct {
int x[20];
} BUFFER;
static int checkBuffers() {
BUFFER cb;
// Use the buffer...
return 0;
};
static __declspec(safebuffers)
int noCheckBuffers() {
BUFFER ncb;
// Use the buffer...
return 0;
}
int wmain() {
checkBuffers();
noCheckBuffers();
return 0;
}
Específico de Microsoft de FINAL