Integer overflow

Integer overflow

Ein Ganzzahlüberlauf (englisch integer overflow) tritt auf, wenn ein Computer Berechnungen mit begrenzter Stellenzahl durchführt und das Rechenergebnis zur Darstellung mehr Stellen erfordert. Die Stellenanzahl und damit der Wertebereich ist durch das Rechenwerk begrenzt.

Das Rechenwerk heutiger Computer ist meist für 32 oder 64 Binärstellen ausgelegt. Tritt hier ein Ganzzahlüberlauf auf, so wird dies im Statusregister des Prozessors registriert; dieser Fall kann vom Programmierer festgestellt werden.

Ein anderer Fall liegt vor, wenn ein Rechenergebnis in einer Variablen gespeichert wird, die weniger Stellen als das Rechenwerk aufweist. Dieser Fall wird vom Prozessor nicht automatisch erkannt, die Variable erhält einen falschen Wert.

Erst durch die Verwendung von Funktionsbibliotheken ist es möglich, Berechnungen mit Millionen von Stellen durchzuführen ohne einen Ganzzahlüberlauf zu erreichen.

Ein Beispiel aus der ProgrammierspracheC“: Der Datentyp unsigned char umfasst 8 Bit. Sein Wertebereich reicht von 0 bis 255.

unsigned char a = 255;
unsigned char b = 2;
unsigned char Ergebnis = a + b;

Die zugehörige duale Rechnung veranschaulicht den Ganzzahlüberlauf:

  11111111 (a)
+ 00000010 (b)
----------
 100000001 (Ergebnis)


Die vordere Eins, das neunte Bit, ist nicht in den 8 Bit des gewählten Datentypen enthalten. Betrachtet man nur diese letzten 8 Bit, so erhält man 00000001, also 1 und nicht 257. Selbst wenn zur Übersetzung des Programmcodes die Zahlenwerte festehen, ignorieren manche C-Compiler diese Überläufe, was zu falschen Ergebnissen führt. Daher sollte der Datentyp immer ausreichend groß gewählt werden.

Bei der plattformunabhängigen Programmierung sollte der Ganzzahlüberlauf nicht absichtlich benutzt werden, da der Wertebereich der Datentypen, und damit der Punkt des Überlaufs, auf den Zielsystemen unterschiedlich sein kann.


Wikimedia Foundation.

Игры ⚽ Нужно сделать НИР?

Schlagen Sie auch in anderen Wörterbüchern nach:

  • Integer overflow — In computer programming, an integer overflow occurs when an arithmetic operation attempts to create a numeric value that is larger than can be represented within the available storage space. For instance, adding 1 to the largest value that can be …   Wikipedia

  • Integer overflow — Dépassement d entier En informatique, un dépassement d entier (integer overflow) est une condition qui se produit lorsqu une opération mathématique produit une valeur numérique supérieure à celle représentable dans l espace de stockage disponible …   Wikipédia en Français

  • Stack buffer overflow — In software, a stack buffer overflow occurs when a program writes to a memory address on the program s call stack outside of the intended data structure; usually a fixed length buffer.cite web last = Fithen first = William L coauthors = Seacord,… …   Wikipedia

  • Arithmetic overflow — The term arithmetic overflow or simply overflow has the following meanings. In a computer, the condition that occurs when a calculation produces a result that is greater in magnitude than that which a given register or storage location can store… …   Wikipedia

  • Buffer Overflow — Dépassement de tampon En informatique, un dépassement de tampon ou débordement de tampon (en anglais, buffer overflow) est un bogue causé par un processus qui, lors de l écriture dans un tampon, écrit à l extérieur de l espace alloué au tampon,… …   Wikipédia en Français

  • Buffer overflow — Dépassement de tampon En informatique, un dépassement de tampon ou débordement de tampon (en anglais, buffer overflow) est un bogue causé par un processus qui, lors de l écriture dans un tampon, écrit à l extérieur de l espace alloué au tampon,… …   Wikipédia en Français

  • Heap overflow — Dépassement de tas En informatique, un dépassement ou débordement de tas (en anglais, heap based buffer overflow ou plus simplement heap overflow) est un bogue semblable à un dépassement de tampon, mais contrairement à ce dernier où le… …   Wikipédia en Français

  • Call stack overflow — Dépassement de pile En informatique, un dépassement de pile ou débordement de pile (en anglais, stack overflow) est un bogue causé par un processus qui, lors de l écriture dans une pile, écrit à l extérieur de l espace alloué à la pile, écrasant… …   Wikipédia en Français

  • Stack overflow — Dépassement de pile En informatique, un dépassement de pile ou débordement de pile (en anglais, stack overflow) est un bogue causé par un processus qui, lors de l écriture dans une pile, écrit à l extérieur de l espace alloué à la pile, écrasant… …   Wikipédia en Français

  • Buffer overflow protection — refers to various techniques used during software development to enhance the security of executable programs by detecting buffer overflows on stack allocated variables as they occur and preventing them from becoming serious security… …   Wikipedia

Share the article and excerpts

Direct link
Do a right-click on the link above
and select “Copy Link”