Skip to main content

Cos'è un overflow intero?

L'overflow intero si riferisce al fenomeno che si verifica in alcuni tipi di dati del computer in cui i loro segni passano da positivi a negativi o viceversa, quando raggiungono le estremità delle loro gamme applicabili.Negli intervalli di computer, i tipi di dati interi hanno gamme circolari e quando raggiungono un'estremità della loro gamma, si spostano immediatamente all'altra estremità della loro gamma.Questo è anche chiamato overflow intero.

Un numero intero firmato può contenere un intervallo di valori da -2 31 a (2 31 ) - 1. Questo numero intero non può avere un valore di (-2 31 ) - 1;Piuttosto, il numero successivo a cui aumenta è all'altra estremità del suo intervallo: (2 31 - 1).Il cambiamento da negativo a positivo alla fine del suo intervallo è un esempio di overflow intero.Allo stesso modo, un numero intero non può avere un valore di 2 31 ;Questo valore passerebbe invece all'altra estremità del suo intervallo e diventerebbe -2 31 .

Questo overflow ha conseguenze significative durante la programmazione.Un array può contenere solo tanti indici che il tipo intero consente e gli indici negativi non contano.Se un programmatore tenta di creare un array più grande del tipo di intero, possono verificarsi errori di memoria significativi perché l'overflow intero comporterebbe un indice negativo.Ciò è particolarmente pericoloso nelle lingue che non hanno limiti espliciti che controllano gli array, come C ++.

Quando si verifica il trabocco intero, possono verificarsi tipi correlati di overflow come overflow tampone, overflow heap e overflow del tampone stack.In tutti questi casi, l'overflow intero agisce per sopraffare le strutture di memoria con più dati di quanto le strutture possano essere concepibilmente contenere.Questi overflow, in semplici programmi, non fanno spesso molto più che causare un errore di scrittura di lettura o non valido.La manipolazione di questo problema da parte degli hacker, tuttavia, può progettare errori di memoria che possono causare problemi più seri.

Nella maggior parte dei programmi semplici, l'overflow intero non è un grosso problema.I limiti del tipo di intero sono abbastanza grandi da non entrare in gioco il problema di overflow a meno che non vengono gestiti molti dati contemporaneamente.In alcuni casi, l'overflow può essere mitigato, come nel caso di contatori incrementali, utilizzando un tipo di dati più ampio con un intervallo maggiore.Il tipo di dati più ampio potrebbe, in teoria, eventualmente incontrare lo stesso problema di overflow, ma man mano che i tipi di dati aumentano, le possibilità di farlo si riducono.Ogni gamma di tipi di dati interi è almeno il doppio del prossimo più piccolo, quindi c'è ampio spazio per ulteriori dati.