Skip to main content

Wat is een gehele overloop?

Integer Overflow verwijst naar het fenomeen dat plaatsvindt in bepaalde computergegevenstypen waar hun tekenen overschakelen van positief naar negatief, of vice versa, wanneer ze de uiteinden van hun toepasselijke bereiken bereiken.In computerbereiken hebben getal -gegevenstypen cirkelvormige reeksen en wanneer ze het ene uiteinde van hun bereik bereiken, gaan ze onmiddellijk naar het andere uiteinde van hun bereik.Dit wordt ook wel integer -overloop genoemd.

Een ondertekend geheel getal kan een bereik van waarden bevatten van -2 31 tot (2 31 ) - 1. Dit gehele getal kan geen waarde hebben van (-2 31 ) - 1;In plaats daarvan is het volgende nummer dat het verhoogt aan het andere uiteinde van het bereik: (2 31 - 1).De verandering van negatief naar positief aan het einde van het bereik is een voorbeeld van gehele overloop.Evenzo kan een geheel getal geen waarde hebben van 2 31 ;Deze waarde zou in plaats daarvan overschakelen naar het andere uiteinde van het bereik en -2 31 worden.

Deze overloop heeft aanzienlijke gevolgen tijdens het programmeren.Een array kan alleen zoveel indices bevatten als het gehele getal -type het toelaat en negatieve indices niet tellen.Als een programmeur probeert een array groter te maken dan het gehele getal dat toestaat, kunnen significante geheugenfouten optreden omdat het gehele overloop zou resulteren in een negatieve index.Dit is vooral gevaarlijk in talen die geen expliciete grenzen hebben die controleren op arrays, zoals C ++.

wanneer een geheel getal overloopt, kunnen gerelateerde soorten overloop zoals bufferoverloop, heap -overloop en stapbufferoverloop optreden.In al deze gevallen werkt de gehele overloop om geheugenstructuren te overweldigen met meer gegevens dan die structuren mogelijk kunnen vasthouden.Deze overstromen, in eenvoudige programma's, doen niet vaak veel meer dan een ongeldige lees- of ongeldige schrijffout veroorzaken.Manipulatie van dit probleem door hackers kan echter geheugenfouten ontwikkelen die ernstigere problemen kunnen veroorzaken.

In de meeste eenvoudige programma's is een geheel getal overloop geen groot probleem.De limieten van het geheel getal zijn voldoende groot genoeg dat het overloopprobleem niet in het spel komt, tenzij er veel gegevens tegelijk worden behandeld.In sommige gevallen kan de overloop worden beperkt, zoals in het geval van toenemende tellers, door een groter gegevenstype met een groter bereik te gebruiken.Het grotere gegevenstype zou in theorie uiteindelijk hetzelfde overloopprobleem kunnen tegenkomen, maar naarmate het gegevenstype -bereik groter wordt, worden de kansen om dit te doen kleiner.Het bereik van elk gehele getal datetypen is ten minste twee keer zo groot als de volgende kleinste, dus er is voldoende ruimte voor extra gegevens.