Sommario:
Definizione - Cosa significa non sicuro?
Unsafe è una parola chiave del linguaggio di programmazione C (C #) utilizzata per indicare una sezione di codice che non è gestita da Common Language Runtime (CLR) di .NET Framework o codice non gestito. Non sicuro viene utilizzato nella dichiarazione di un tipo o membro o per specificare il codice di blocco. Se utilizzato per specificare un metodo, il contesto dell'intero metodo non è sicuro.
Il codice non sicuro offre una buona interoperabilità con le interfacce di programmazione dell'applicazione (API) non gestite o le chiamate di sistema e funge da interfaccia compatibile per le librerie di collegamento dinamico di terze parti (DLL), che richiedono puntatori per il passaggio dei parametri. È inoltre possibile utilizzare codice non sicuro durante il debug, quando il contenuto del processo richiede ispezione o analisi.
Techopedia spiega Unsafe
I dati non sicuri si riferiscono a dati di memoria allocati che non sono controllati dal CLR, come handle o puntatori di Windows allocati tramite un nuovo metodo.
Il codice non sicuro si riferisce a un'istruzione o un metodo che accede alla memoria non gestita, tra cui:
- Chiamate alle API di Windows
- Chiamate a componenti dell'interfaccia del metodo COM (Component Object Model) che coinvolgono strutture con puntatori o codice critico per le prestazioni.
Il codice non sicuro viene utilizzato principalmente quando le operazioni coinvolgono puntatori e, generalmente, quando il codice viene eseguito al di fuori del contesto gestito. La compilazione di codice non sicuro richiede la specifica dell'opzione "/ unsafe" con il comando compilation.
In ambienti completamente affidabili, CLR è necessario per l'esecuzione di codice non sicuro. Tuttavia, CLR non verifica il codice non sicuro. CLR supporta il codice non sicuro per fornire accesso diretto al codice di memoria non gestito, che a volte è preferito per motivi di prestazioni.
Poiché CLR mantiene la sicurezza e la protezione dei tipi, C # non supporta l'aritmetica del puntatore nel codice gestito, a differenza di C / C ++. La parola chiave non sicura consente l'utilizzo del puntatore nel codice non gestito. Tuttavia, la sicurezza non è garantita perché non vengono seguite rigide regole di accesso agli oggetti. Ad esempio, le funzionalità di funzionamento del puntatore non sono fornite in Java Runtime Environment (JRE).
Il codice non sicuro può creare problemi di stabilità e sicurezza, a causa della sua sintassi complessa intrinseca e del potenziale per errori relativi alla memoria, come overflow dello stack, accesso e sovrascrittura della memoria di sistema. Un'ulteriore assistenza agli sviluppatori è fondamentale per evitare potenziali errori o rischi per la sicurezza.
