Skip to main content

Hva er et heltalloverløp?

Heltalloverløp refererer til fenomenet som oppstår i visse datatatatyper der tegnene deres bytter fra positive til negative, eller omvendt, når de når endene av de aktuelle områdene.I datamaskinområder har heltalldatatyper sirkulære områder, og når de når den ene enden av rekkevidden, flytter de umiddelbart til den andre enden av rekkevidden.Dette kalles også heltalloverløp.

Et signert heltall kan inneholde en rekke verdier fra -2 31 til (2 31 ) - 1. Dette heltallet kan ikke ha en verdi på (-2 31 ) - 1;Snarere er det neste tallet det øker å være i den andre enden av området: (2 31 - 1).Endringen fra negativ til positiv på slutten av området er et eksempel på heltalloverløp.På samme måte kan ikke et heltall ha en verdi på 2 31 ;Denne verdien vil i stedet bytte til den andre enden av rekkevidden og bli -2 31 .

Dette overløpet har betydelige konsekvenser mens programmering.En matrise kan bare ha så mange indekser i den som heltallstypen tillater, og negative indekser teller ikke.Hvis en programmerer prøver å lage en matrise som er større enn heltallstypen tillater, kan betydelige minnefeil oppstå fordi heltalloverløp vil resultere i en negativ indeks.Dette er spesielt farlig på språk som ikke har eksplisitte grenser som sjekker for matriser, som C ++.

Når heltalloverløp oppstår, kan relaterte typer overløp som bufferoverløp, haugoverløp og stackbufferoverløp oppstå.I alle disse tilfellene virker heltalloverløp for å overvelde minnestrukturer med mer data enn disse strukturene kan tenkes å inneholde.Disse overløpene, i enkle programmer, gjør ikke ofte mye mer enn å forårsake en ugyldig lesning eller ugyldig skrivefeil.Manipulering av dette problemet fra hackere kan imidlertid konstruere minnefeil som kan forårsake mer alvorlige problemer.

I de fleste enkle programmer er heltalloverløp ikke et stort problem.Grensene for heltallstypen er tilstrekkelig store nok til at overløpsproblemet ikke kommer inn i spill med mindre mye data blir håndtert på en gang.I noen tilfeller kan overløp reduseres, som for økende tellere, ved å bruke en større datatype med et større område.Den større datatypen kan i teorien til slutt møte det samme overløpsproblemet, men etter hvert som datatypen blir større, blir sjansene for å gjøre det mindre.Hvert heltallsdatatyperområde er minst dobbelt så stor som den neste minste, så det er god plass for tilleggsdata.