L’overflow (traboccamento) è una condizione anomala che si verifica in un sistema di elaborazione quando il risultato di un calcolo aritmetico o logico è un valore troppo grande per essere memorizzato nello spazio (numero di bit) allocato per quella variabile.
Esistono diverse varianti critiche:
- Arithmetic Overflow: avviene quando si somma, ad esempio, due numeri interi positivi e il risultato supera il massimo valore rappresentabile (es. 255 per un intero a 8 bit). In molti sistemi, questo causa un “wrap-around”, dove il valore ricomincia da zero o diventa negativo, portando a calcoli totalmente errati.
- Buffer Overflow: errore di programmazione gravissimo in cui un programma scrive dati oltre i confini di un buffer di memoria. Questo può corrompere dati adiacenti, causare crash del sistema o essere sfruttato da hacker per eseguire codice malevolo (exploit).
- Stack Overflow: si verifica quando la memoria dedicata allo stack delle chiamate di funzione viene esaurita, solitamente a causa di una ricorsione infinita.
In ingegneria del software, la gestione corretta dell’overflow è un requisito di sicurezza e robustezza fondamentale, specialmente in sistemi critici (avionica, apparati medicali) dove un errore numerico può avere conseguenze catastrofiche.