Skip to main content

Qu'est-ce qu'un débordement entier?

Le débordement entier fait référence au phénomène qui se produit dans certains types de données informatiques où leurs signes passent du positif au négatif, ou vice versa, lorsqu'ils atteignent les extrémités de leurs gammes applicables.Dans les plages informatiques, les types de données entiers ont des plages circulaires et lorsqu'ils atteignent une extrémité de leur gamme, ils se déplacent immédiatement à l'autre extrémité de leur gamme.Ceci est également appelé débordement entier.

Un entier signé peut contenir une plage de valeurs de -2 31 à (2 31 ) - 1. Cet entier ne peut pas avoir une valeur de (-2 31 ) - 1;Au contraire, le nombre suivant il incrémente est à l'autre extrémité de sa plage: (2 31 - 1).Le passage du négatif au positif à la fin de sa plage est un exemple de débordement entier.De même, un entier ne peut pas avoir une valeur de 2 31 ;Cette valeur passerait plutôt à l'autre extrémité de sa plage et deviendrait -2 31 .

Ce débordement a des conséquences importantes lors de la programmation.Un tableau ne peut contenir autant d'indices que le type entier le permet, et les indices négatifs ne comptent pas.Si un programmeur tente de créer un tableau plus grand que le type entier le permet, des erreurs de mémoire significatives peuvent se produire car le débordement entier entraînerait un index négatif.Ceci est particulièrement dangereux dans les langues qui n'ont pas de limites explicites pour vérifier les tableaux, comme C ++.

Lorsque le débordement entier se produit, des types de débordement connexes tels que le débordement de tampon, le débordement de tas et le débordement de tampon de pile peuvent se produire.Dans tous ces cas, le débordement entier agit pour submerger les structures de mémoire avec plus de données que ces structures ne peuvent en théorie.Ces débordements, dans des programmes simples, ne font pas souvent bien plus que provoquer une erreur d'écriture de lecture ou non valide non valide.La manipulation de ce problème par les pirates peut cependant concevoir des erreurs de mémoire qui peuvent causer des problèmes plus graves.

Dans la plupart des programmes simples, le débordement entier n'est pas un problème majeur.Les limites du type entier sont suffisamment grandes pour que le problème de débordement ne soit en jeu que si de nombreuses données sont gérées en même temps.Dans certains cas, le débordement peut être atténué, comme dans le cas de compteurs d'incrémentation, en utilisant un type de données plus important avec une plus grande plage.Le plus grand type de données pourrait, en théorie, finalement rencontrer le même problème de débordement, mais à mesure que les gammes de types de données s'agrandissent, les chances de le faire deviennent plus petites.Chaque gamme de types de données entiers est au moins deux fois la taille du plus petit, il y a donc amplement de place pour des données supplémentaires.