/sdl (Abilita ulteriori controlli di sicurezza)
Aggiunge i controlli consigliati di Security Development Lifecycle (SDL). Questi controlli includono altri avvisi relativi alla sicurezza come errori e funzionalità aggiuntive per la generazione di codice sicuro.
/sdl[-]
Note
/sdl abilita un superset dei controlli di sicurezza di base disponibili in /GS ed ignora /GS-. Per impostazione predefinita, l'opzione /sdl è disattivata. /sdl- disabilita i controlli di sicurezza aggiuntivi.
Controlli in fase di compilazione
/sdl abilita questi avvisi come errori:
Avviso abilitato da /sdl |
Opzione della riga di comando equivalente |
Descrizione |
---|---|---|
/we4146 |
Un operatore di sottrazione unario viene applicato a un tipo unsigned, restituendo un risultato unsigned. |
|
/we4308 |
Una costante integrale negativa convertita in un tipo unsigned, restituendo un risultato forse privo di significato. |
|
/we4532 |
L'utilizzo delle parole chiave continue, break o goto in un blocco __finally/finally genera un comportamento indefinito in caso di terminazione anomala. |
|
/we4533 |
Il codice che inizializza una variabile non verrà eseguito. |
|
/we4700 |
Utilizzo di una variabile locale non inizializzata. |
|
/we4703 |
Utilizzo di una variabile locale puntatore potenzialmente non inizializzata. |
|
/we4789 |
Sovraccarico del buffer quando vengono utilizzate le funzioni specifiche di runtime del linguaggio C (CRT). |
|
/we4995 |
Utilizzo di una funzione contrassegnata con il pragma deprecated. |
|
/we4996 |
Utilizzo di una funzione contrassegnata come deprecated. |
Controlli runtime
Quando è abilitato /sdl, il compilatore genera codice per eseguire questi controlli in fase di esecuzione:
Attiva la modalità strict del rilevamento del sovraccarico del buffer in fase di esecuzione /GS, equivalente alla compilazione con #pragma strict_gs_check(push, on).
Esegue una pulizia del puntatore limitata. In espressioni che non includono dereferenziazioni e nei tipi che non dispongono di un distruttore definito dall'utente, i riferimenti del puntatore vengono impostati su un indirizzo non valido in seguito ad una chiamata a delete. Questo consente di prevenire il riutilizzo di riferimenti del puntatore non aggiornati.
Esegue l'inizializzazione dei membri della classe. Inizializza automaticamente tutti i membri della classe a zero in fase di creazione di oggetti, prima che venga eseguito il costruttore. Questo consente di evitare l'utilizzo di dati non inizializzati associati ai membri della classe che il costruttore non inizializza in modo esplicito.
Note
Per altre informazioni, vedere Avvisi, /sdl e miglioramento del rilevamento della variabile non inizializzata.
Per impostare l'opzione del compilatore nell'ambiente di sviluppo di Visual Studio
Aprire la finestra di dialogo Pagine delle proprietà del progetto. Per informazioni dettagliate, vedere Procedura: aprire le pagine delle proprietà dei progetti.
Selezionare la cartella C/C++.
Nella pagina Generale, selezionare l'opzione dall'elenco a discesa Controlli SDL.