Skip to main content

Hvad er et heltaloverløb?

Heltaloverløb henviser til det fænomen, der forekommer i visse computerdatatyper, hvor deres tegn skifter fra positivt til negativt eller omvendt, når de når enderne af deres gældende intervaller.I computerområder har heltaldatatyper cirkulære intervaller, og når de når den ene ende af deres rækkevidde, flytter de straks til den anden ende af deres rækkevidde.Dette kaldes også heltaloverløb.

Et underskrevet heltal kan indeholde en række værdier fra -2 31 til (2 31 ) - 1. Dette heltal kan ikke have en værdi af (-2 31 ) - 1;Tværtimod er det næste nummer, det øges til, i den anden ende af dets rækkevidde: (2 31 - 1).Ændringen fra negativ til positiv i slutningen af dets rækkevidde er et eksempel på heltaloverløb.På samme måde kan et heltal ikke have en værdi af 2 31 ;Denne værdi ville i stedet skifte til den anden ende af sin rækkevidde og blive -2 31 .

Dette overløb har betydelige konsekvenser, mens programmeringen er.En matrix kan kun have så mange indekser i det, som heltalstypen tillader, og negative indekser tæller ikke.Hvis en programmør forsøger at oprette en matrix større end heltalstypen tillader, kan der forekomme betydelige hukommelsesfejl, fordi overløbet overtligner ville resultere i et negativt indeks.Dette er især farligt på sprog, der ikke har eksplicitte grænser, der kontrollerer for arrays, som C ++.

Når heltaloverløb forekommer, kan der forekomme relaterede typer overløb, såsom bufferoverløb, bunkeoverløb og overløb af stakbuffer.I alle disse tilfælde virker det heltalsoverløb for at overvælde hukommelsesstrukturer med flere data, end disse strukturer kan tænkes.Disse overløb, i enkle programmer, gør ikke ofte meget mere end at forårsage en ugyldig læsning eller ugyldig skrivefejl.Manipulation af dette problem fra hackere kan imidlertid konstruere hukommelsesfejl, der kan forårsage mere alvorlige problemer.

I de fleste enkle programmer er heltaloverløb ikke et stort problem.Grænserne for heltalstypen er tilstrækkeligt store nok til, at overløbsproblemet ikke kommer i spil, medmindre der håndteres en masse data på én gang.I nogle tilfælde kan overløb afbødes, som for forøgende tællere, ved at bruge en større datatype med et større interval.Den større datatype kunne i teorien til sidst støde på det samme overløbsproblem, men når datatypen er større, bliver chancerne for at gøre det mindre.Hvert heltal datatyper er mindst dobbelt så stor som den næste mindste, så der er rigelig plads til yderligere data.