Se recomienda usar Visual Studio 2017

/sdl (habilitar comprobaciones adicionales de seguridad)

 

Para obtener la documentación más reciente de Visual Studio 2017 RC, consulte Documentación de Visual Studio 2017 RC.

Agrega las comprobaciones recomendadas del ciclo de vida de desarrollo de seguridad (SDL). Estas comprobaciones incluyen advertencias adicionales relativas a la seguridad como errores y características seguras adicionales de generación de código.

/sdl[-]  

/sdl habilita un supraconjunto de comprobaciones de seguridad de la línea de base proporcionadas por /GS y reemplaza /GS-. La opción /sdl está desactivada de manera predeterminada. /sdl- deshabilita las comprobaciones de seguridad adicionales.

/sdl habilita estas advertencias como errores:

Advertencia habilitada por /sdlModificador equivalente de la línea de comandosDescripción
C4146/we4146Se aplicó un operador unario menos a un tipo unsigned, lo que produce un resultado sin signo.
C4308/we4308Una constante negativa de tipo entero se convirtió a un tipo sin signo, lo que produce un resultado que posiblemente carece de sentido.
C4532/we4532El uso de las palabras clave continue, break o goto en un bloque __finally/finally tiene un comportamiento indefinido durante la terminación anormal.
C4533/we4533El código que inicializa una variable no se ejecuta.
C4700/we4700Uso de una variable local sin inicializar.
C4703/we4703Uso de una variable de puntero local potencialmente no inicializada.
C4789/we4789Saturación del búfer cuando se utilizan funciones específicas de C en tiempo de ejecución (CRT).
C4995/we4995Uso de una función marcada con una directiva pragma desusada.
C4996/we4996Uso de una función marcada como desusada.

Cuando se habilita /sdl, el compilador genera código para realizar estas comprobaciones en tiempo de ejecución:

  • Habilita el modo estricto de detección de saturación del búfer en tiempo de ejecución de /GS, lo que equivale a compilar con #pragma strict_gs_check(push, on).

  • Realiza una inmunización de puntero limitada. En las expresiones que no implican desreferenciación y en los tipos que no tienen un destructor definido por el usuario, las referencias de puntero se establecen en una dirección no válida después de una llamada a delete. Esto ayuda a evitar la reutilización de las referencias de puntero obsoletas.

  • Realiza la inicialización del miembro de clase. Se inicializan automáticamente todos los miembros de clase a cero en la creación de instancias de objetos (antes de que se ejecute el constructor). Esto ayuda a evitar el uso de los datos sin inicializar asociados a los miembros de clase que el constructor no inicializa explícitamente.

Para obtener más información, vea la entrada de blog sobre advertencias, /sdl y mejora de la detección de variables sin inicializar.

Para establecer esta opción del compilador en el entorno de desarrollo de Visual Studio

  1. Abra el cuadro de diálogo Páginas de propiedades del proyecto. Para obtener más información detallada, vea Cómo: Abrir páginas de propiedades del proyecto.

  2. Seleccione la carpeta C/C++.

  3. En la página General, seleccione la opción en la lista desplegable Comprobaciones SDL.

Opciones del compilador
Establecer las opciones del compilador

Mostrar: