Cosa significa "Out of Bounds" Mean su un computer?

July 31

Una delle parti fondamentali di ogni programma è la variabile. La variabile rappresenta un valore memorizzato nella memoria del computer. Il modo in cui i programmi di accesso ai dati è importante, però: utilizzando raccolte di dati chiamati array, diventa possibile per i programmatori di eseguire calcoli indesiderate utilizzando i valori sconosciuti in memoria. Andando al di fuori dei limiti di una matrice, un programmatore comincia essenzialmente a cambiare eventualmente valori in memoria che possono rappresentare importanti funzionalità per il programma o per l'intero sistema stesso.

memoria del computer

Memoria in un sistema informatico è disposto sequenzialmente. Ciò significa che le variabili dichiarate risiederanno nella memoria accanto ad altre variabili, o altri dati. Slot di memoria sono divisi per il loro tipo, in modo che la memoria sufficiente viene messa da parte per ogni tipo. Ad esempio, se un programma destina una variabile integer e una variabile carattere, designerebbe due byte di memoria per il numero intero, un byte per il carattere.

Array

I programmatori possono anche mettere da parte gli array di valori, che rappresentano un insieme di valori sotto lo stesso nome di variabile. Così, invece di dichiarare cinque diverse variabili intere che rappresentano un elenco, il programmatore dichiara un array di cinque valori, che si trovano sotto il nome di matrice e sono accessibili facendo riferimento indice a base zero della matrice. Di conseguenza, quando un programmatore annulla un array, il computer imposta da parte abbastanza memoria permanente per la quantità di valori l'array contenere. Quindi, se il programmatore dichiara un array di cinque interi, il computer di accantonare il successivo spazio disponibile in memoria che può contenere cinque interi.

Array e Out of Bounds

Il programmatore può dichiarare un array e accedere ai suoi valori attraverso l'accesso ai indici che contengono i valori. Tuttavia, in alcuni linguaggi di programmazione, come C, non vi è nulla per fermare il programmatore di tentare accidentalmente accedere ad un indice non fa parte della matrice. Ad esempio, un programmatore utilizzando la matrice cinque integer potrebbe tentare di accedere un sesto valore. Il programmatore è andato "fuori dei limiti" della matrice: il valore non esiste come parte della matrice, così ora il programmatore sta tentando di accedere alla memoria esterna all'array.

Necessità di controllo dei limiti

Andando al di fuori dei limiti della matrice, il programmatore è ora potenzialmente manipolare i dati in altre locazioni di memoria. Molto probabilmente, il programmatore ha idea di cosa è in questa posizione di memoria: potrebbe essere dati per un'altra variabile, o una posizione di riferimento per un'altra funzione. Se un linguaggio di programmazione non controlla i confini vietando ai programmatori di accedere ai dati al di fuori di un array, il programmatore potrebbe riscrivere codice che esegue funzioni critiche, di fa sì che il programma in corso per mostrare un comportamento intenzionale.