Stack overflow

Stack Overflow

Copyright ┬ę Shutterstock / Profit_Image

Was ist ein Stack Overflow?

Ein Stack Overflow┬á(Stapel├╝berlauf) kann in einem Computerprogramm aufgrund ├╝berm├Ą├čiger Speicherauslastung auftreten. Diese ├╝berm├Ą├čige Speichernutzung tritt auf dem Call Stack (Aufruf-Stapel) auf, in dem Information bez├╝glich der aktiven Unterroutinen in einem Programm gespeichert werden. Der Aufrufstapel hat nur eine begrenzte Menge an Speicher verf├╝gbar. Seine tats├Ąchliche Gr├Â├če wird durch unterschiedliche Faktoren wie die genutzte Programmiersprache, die Architektur von Hardware und Betriebssystem, die Verf├╝gbarkeit von Multithreading auf der CPU und den verf├╝gbaren Speicher bestimmt. Es hat also damit zu tun, wie der Computer selbst Daten verwaltet und wie die darauf laufenden Programme sie nutzen.

Wenn es zu einem Stack Overflow kommt und ein Stapel├╝berlauffehler auftritt, st├╝rzt das Programm, dessen Ausf├╝hrung diesen verursacht hat, normalerweise ab. In Folge dessen┬ákann das Programm entweder einfrieren oder au├čerplanm├Ą├čig beendet werden. Nicht gespeicherte Daten oder Arbeitsst├Ąnde gehen verloren. Der Stack Overflow Fehler wird oft durch eine Endlosschleife in der Programmierung oder durch die Erstellung von Variablen (und entsprechende Reservierung von Speicherplatz) verursacht, die f├╝r die Kapazit├Ąt des Aufruf-Stacks zu gro├č sind.

Stack Overflows auf Desktop PCs sind selten geworden

Das Problem des Stack-├ťberlaufs ist auf den neueren Betriebssystemen inzwischen nicht mehr so verbreitet wie in fr├╝heren Zeiten, jedoch kann es aufgrund des geringen Platzangebots auf mobilen Ger├Ąten zu einer Herausforderung werden. Wenn ein Betriebssystem auf einem mobilen Ger├Ąt einen Stack Overflow feststellt, kann dies verschiedene Ursachen haben. So werden m├Âglicherweise zu viele Anwendungen zur gleichen Zeit ausgef├╝hrt, ein Virus verwendet Stapelspeicher oder das Ger├Ąt enth├Ąlt fehlerhafte Hardware. Bei einem Stack Overflow auf Mobilger├Ąten sollten Nutzer deswegen die Intensit├Ąt der App-Nutzung und den Virenschutz ├╝berpr├╝fen und gegebenenfalls eine Speicherdiagnose-App auf dem Mobilger├Ąt ausf├╝hren, um festzustellen, ob dies zur Behebung des Fehlers beitr├Ągt.

Vom Konzept her ist ein Stack (Stapel) im Wesentlichen genau das, wonach es sich anh├Ârt. Ein Stapel von Informationen. Programme und Betriebssystem k├Ânnen Dinge auf den Stapel legen und Dinge vom Stapel nehmen. Das klingt trivial und zun├Ąchst m├Âglicherweise nutzlos, aber als Endanwender sollte man darauf vertrauen, dass es auf Mikroprozessoren aller Art tats├Ąchlich ein grundlegendes und unglaublich n├╝tzliches Konzept darstellt.

Jedes laufende Programm hat gewisserma├čen seinen eigenen Stapel irgendwo im Speicher des Computers. Aber da im Speicher noch vieles au├čerhalb der Ausf├╝hrung eines bestimmten Programms passiert, ist jedem Stack nur eine begrenzte Teilmenge des insgesamt verf├╝gbaren Speichers zugewiesen. Dabei muss man als Anwender hoffen, dass jedem Programm

a) genug Platz f├╝r den Ablauf des Programms unter Ber├╝cksichtigung aller Eventualit├Ąten reserviert wird┬áund

b) dass Programme keine Fehler in der Programmierung beinhalten, die es veranlassen w├╝rden, Dinge auf den Stapel zu legen, ohne sie so bald wie m├Âglich oder ├╝berhaupt wieder vom Stack zu nehmen. Wenn Programme zu viel auf den Stapel legen, kann dies zu einem ├ťberlauf f├╝hren. Was passiert, nachdem ein Stack Overflow eingetreten ist, h├Ąngt davon ab, wie die entsprechende Software im Einzelnen geschrieben ist.

Was verursacht einen Stack Overflow?

Was genau letztendlich zu einem Stack Overflow f├╝hrt, h├Ąngt in der Realit├Ąt ma├čgeblich davon ab, wie die betreffende Software geschrieben wurde. Letztendlich ist jeder Stapel├╝berlauf, den man als solchen erkennen kann, irgendwo ein Fehler. Die h├Ąufigste Ursache f├╝r einen Stapel├╝berlauf ist eine ├╝berm├Ą├čig tiefe oder unendliche Rekursion, bei der sich eine Funktion so oft aufruft, dass der ben├Âtigte Platz zum Speichern der Variablen und Informationen f├╝r jeden Aufruf zunimmt, bis die Stack-Kapazit├Ąt ├╝berschritten wird.

Die andere Hauptursache f├╝r einen Stack Overflow resultiert aus dem Versuch, mehr Speicher auf dem Stack zuzuweisen, als erlaubt, zum Beispiel durch das Erstellen von zu gro├čen lokalen Array-Variablen. Aus diesem Grund empfehlen einige Autoren, dass Arrays, die gr├Â├čer als einige Kilobytes sind, grunds├Ątzlich dynamisch als lokale Variable zugewiesen werden sollten.

Weiter hilfreiche Artikel finden Sie in unserem Online Marketing Glossar!


Sie haben noch Fragen?

Kontaktieren Sie uns

Kostenloser SEO-Check der OSG


Weitere Inhalte