Condividi tramite


/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

C4146

/we4146

Un operatore di sottrazione unario viene applicato a un tipo unsigned, restituendo un risultato unsigned.

C4308

/we4308

Una costante integrale negativa convertita in un tipo unsigned, restituendo un risultato forse privo di significato.

C4532

/we4532

L'utilizzo delle parole chiave continue, break o goto in un blocco __finally/finally genera un comportamento indefinito in caso di terminazione anomala.

C4533

/we4533

Il codice che inizializza una variabile non verrà eseguito.

C4700

/we4700

Utilizzo di una variabile locale non inizializzata.

C4703

/we4703

Utilizzo di una variabile locale puntatore potenzialmente non inizializzata.

C4789

/we4789

Sovraccarico del buffer quando vengono utilizzate le funzioni specifiche di runtime del linguaggio C (CRT).

C4995

/we4995

Utilizzo di una funzione contrassegnata con il pragma deprecated.

C4996

/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

  1. Aprire la finestra di dialogo Pagine delle proprietà del progetto. Per informazioni dettagliate, vedere Procedura: aprire le pagine delle proprietà dei progetti.

  2. Selezionare la cartella C/C++.

  3. Nella pagina Generale, selezionare l'opzione dall'elenco a discesa Controlli SDL.

Vedere anche

Riferimenti

Opzioni del compilatore

Impostazione delle opzioni del compilatore