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 gehele getal kan een reeks 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
Deze overloop heeft aanzienlijke gevolgen tijdens het programmeren. Een array kan alleen hAve zoveel indices erin als het gehele getal dat het toelaat, en negatieve indices tellen niet mee. 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 integer overloop optreedt, kunnen gerelateerde soorten overloop zoals bufferoverloop, heap -overloop en stapelbufferoverloop 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 engineeren die meer ernstige problemen kunnen veroorzaken.
In de meest eenvoudige programma's, intEger -overloop is geen groot probleem. De limieten van het geheel getal zijn voldoende groot genoeg dat het overloopprobleem niet in het spel komt, tenzij veel gegevens meteen worden afgehandeld. 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 gegevenstype is ten minste twee keer zo groot als de volgende kleinste, dus er is voldoende ruimte voor extra gegevens.