Was verursacht einen Stapelüberlauf?

Sie denken vielleicht, dass dies ein Zufall ist, dass das Thema meiner Frage dem Namen des Forums ähnelt, aber ich bin tatsächlich hierher gekommen, indem ich den Begriff "Stapelüberlauf" gegoogelt habe.

Ich verwende den OPNET-Netzwerksimulator, in dem ich mit C programmiere. Ich glaube, ich habe ein Problem mit großen Array-Größen. Es scheint, dass ich eine Art Speicherzuweisungsbeschränkung treffe. Dies kann mit OPNET, Windows, meinem Laptop-Speicher oder der wahrscheinlichsten C-Sprache zusammenhängen. Das Problem wird verursacht, wenn ich versuche, verschachtelte Arrays mit einer Gesamtzahl von Elementen zu verwenden, die mehrere tausend Ganzzahlen ergeben. Ich glaube, ich überschreite eine allgemeine Speicherzuweisungsgrenze und frage mich, ob es eine Möglichkeit gibt, diese Obergrenze zu erhöhen. Hier ist die genaue Problembeschreibung:

Ich habe im Grunde eine Routing-Tabelle. Nennen wir es routing_tbl [n], was bedeutet, dass ich 30 Knoten (Router) unterstütze. Jetzt behalte ich für jeden Knoten in dieser Tabelle Informationen. über viele (Hunderte) verfügbare Pfade in einem Array, das als Pfade [p] bezeichnet wird. Für jeden Pfad in diesem Array behalte ich die Liste der zugehörigen Knoten in einem Array mit dem Namen hops [h]. Ich verwende also mindestens nph-Ganzzahlen im Wert von Speicher, aber diese Tabelle enthält auch andere Informationen. In der gleichen Funktion verwende ich auch ein anderes verschachteltes Array, das ebenfalls fast 40.000 Ganzzahlen verbraucht. Sobald ich meine Simulation starte, hört sie auf, sich über einen Stapelüberlauf zu beschweren. Es funktioniert, wenn ich die Gesamtgröße der Routingtabelle verkleinere. Was ist Ihrer Meinung nach die Ursache des Problems und wie kann es behoben werden? Sehr geschätzter Ali

Antworten auf die Frage(6)

Ihre Antwort auf die Frage