Hva er et heltalloverløp?
Heltalloverløp refererer til fenomenet som oppstår i visse datatyper der deres tegn går over 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 et område med 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 til i den andre enden av området: (2 31 - 1). Endringen fra negativ til positiv på slutten av rekkevidden er et eksempel på heltalloverløp. På samme måte kan ikke et helt tall ha en verdi på 2 31 ; denne verdien vil i stedet bytte til den andre enden av rekkevidden og bli -2 31 .
Dette overflowet har betydelige konsekvenser under programmering. En matrise kan bare ha så mange indekser i det som heltalstypen tillater det, og negative indekser teller ikke. Hvis en programmerer prøver å lage en gruppe større enn det heltallstypen tillater det, kan det oppstå betydelige minnefeil fordi heltalloverløp vil føre til en negativ indeks. Dette er spesielt farlig på språk som ikke har eksplisitte grenser for å se etter matriser, som C ++.
Når heltalloverløp forekommer, kan relaterte typer overløp, for eksempel bufferoverløp, haugevennevirkning og stabelbufferoverløp. I alle disse tilfellene fungerer heltalets overløp for å overvelde minnestrukturer med mer data enn det strukturene kan tenkes å ha. Disse overløpene, i enkle programmer, gjør ikke ofte mye mer enn å forårsake en ugyldig lese- eller ugyldig skrivefeil. Manipulering av dette problemet av hackere kan imidlertid konstruere minnefeil som kan forårsake mer alvorlige problemer.
I de fleste enkle programmer er ikke heltalloverløp et stort problem. Grensene for heltallstypen er tilstrekkelig store til at overløpsproblemet ikke kommer i spill med mindre mye data blir håndtert på en gang. I noen tilfeller kan overløp dempes, som i tilfeller av ø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 datatypene blir større, blir sjansene for å gjøre det mindre. Hvert talldatatypes område er minst dobbelt så stort som den neste minste, så det er god plass for ytterligere data.