Hva betyr "Out of Bounds" Mean på en datamaskin?

En av de grunnleggende delene av en program er variabel. Den variable representerer en verdi som er lagret i datamaskinens minne. Den måten som programmer få tilgang til data som er viktig, men: ved hjelp av samlinger av data kalt rekker, blir det mulig for programmerere å utføre utilsiktede beregninger ved hjelp av ukjente verdier i minnet. Ved å gå utenfor grensene av en matrise, begynner en programmerer i hovedsak å muligens endre verdier i minnet som kan representere viktig funksjonalitet for programmet, eller for hele systemet selv.

Minne

Hukommelse i et datamaskinsystem er anordnet sekvensielt. Dette betyr at variabler deklarert vil ligge i minnet ved siden av andre variabler, eller andre deler av data. Minnespor er delt av sin type, slik at nok minne er avsatt til hver type. For eksempel, hvis et program setter til side et heltall variabel og en karakter variabel, ville det utpeke to byte minne for heltall, deretter en byte for karakteren.

arrays

Programmerere kan også sette av matriser av verdier, som representerer en samling verdier under samme variabelnavn. Så i stedet for å erklære fem forskjellige heltallsvariabler som representerer en liste, sier programmerer en rekke fem verdier, som bor under rekke navn og er tilgjengelige ved å referere til tabellen nullbaserte indeksen. Følgelig, når en programmerer setter til side en rekke setter datamaskinen til side nok kontinuerlig minne for mengden av verdiene i matrisen vil holde. Så hvis programmerer erklærer en rekke fem heltall, vil datamaskinen sette den neste ledige plassen i minnet som kan holde fem heltall.

Arrays og Out of Bounds

Programmereren kan erklære en matrise og få tilgang til sine verdier gjennom å få tilgang til indekser som inneholder verdiene. Men i noen programmeringsspråk som C, er det ingenting å stoppe programmerer fra uhell prøver å få tilgang til en indeks ikke er en del av tabellen. For eksempel kan en programmerer med fem heltall rekke prøve å få tilgang til en sjette verdi. Programmereren har gått "utenfor grensene" i tabellen: verdien eksisterer ikke som en del av tabellen, så nå programmerer prøver å få tilgang til minne utenfor tabellen.

Nødvendigheten av grensekontroll

Ved å gå utenfor grensene av tabellen, er programmerer nå potensielt manipulere data i andre minnesteder. Mest sannsynlig har programmerer ingen anelse om hva som er i dette minnet beliggenhet: det kan være data for en annen variabel, eller en referanse sted for en annen funksjon. Hvis et programmeringsspråk ikke sjekker grenser ved å ikke tillate programmerere for å få tilgang til data utenfor en matrise, programmerer kan skrive kode som utfører kritiske funksjoner, av årsaker det aktuelle programmet for å vise utilsiktet atferd.