/sdl (включение дополнительных проверок безопасности)
Добавляет рекомендуемые проверки жизненного цикла разработки безопасного ПО (SDL). Эти проверки отображают дополнительные, важные для безопасности предупреждения, такие как ошибки, и используют дополнительные функции безопасного создания кода.
/sdl[-]
Заметки
/sdl предоставляет надмножество базовых проверок безопасности, предоставленных /GS, и переопределяет /GS-. По умолчанию параметр /sdl отключен. /sdl- отключает дополнительные проверки безопасности.
Проверки времени компиляции
/sdl позволяет применять эти предупреждения как ошибки:
Включаемые/sdl предупреждения |
Эквивалентный параметр командной строки |
Описание |
---|---|---|
/we4146 |
Унарный оператор "минус" был применен к беззнаковому типу, что приведет к получению результата без знака. |
|
/we4308 |
Отрицательная целая константа преобразуется в беззнаковый тип, что, вероятно, приведет к получению бессмысленного результата. |
|
/we4532 |
Использование ключевых слов continue, break и goto в блоке __finally/finally приводит к неопределенному поведению во время аварийного завершения работы. |
|
/we4533 |
Код инициализации переменной не выполняется. |
|
/we4700 |
Используется неинициализированная локальная переменная. |
|
/we4703 |
Используется потенциально неинициализированная локальная переменная-указатель. |
|
/we4789 |
Переполнение буфера при использовании определенных функций среды выполнения C (CRT). |
|
/we4995 |
Использование функции, помеченной директивой pragma как устаревшая. |
|
/we4996 |
Использование функции, помеченной как устаревшая. |
Проверки времени выполнения
Если параметр /sdl включен, компилятор создает код для применения этих проверок во время выполнения:
Включает строгий режим обнаружения переполнения буфера во время выполнения /GS, что эквивалентно компиляции с параметром #pragma strict_gs_check(push, on).
Выполняет ограниченную очистку указателей. В выражениях, которые не содержат разыменования, и в типах без заданного пользователем деструктора, после вызова delete указатель ссылается на недействительный адрес. Это помогает предотвратить повторное использование ссылок на устаревшие указатели.
Выполняет инициализацию элемента класса. Автоматически инициализирует все элементы класса с нулевым значением при создании экземпляра объекта (перед выполнением конструктора). Это помогает предотвратить использование неинициализированных данных, связанных с элементами класса, которые конструктор не инициализирует явным образом.
Заметки
Дополнительные сведения см. в разделе Предупреждения, /sdl и улучшение обнаружения неинициализированных переменных.
Установка данного параметра компилятора в среде разработки Visual Studio
Откройте диалоговое окно Страницы свойств проекта. Дополнительные сведения см. в разделе Открытие свойств страниц проекта.
Выберите папку C/C++.
На странице Общие выберите параметр из раскрывающегося списка Проверки SDL.