Freigeben über


Nicht mehr Stapelspeicher (Visual Basic)

Der Stapel ist ein Arbeitsbereich des Arbeitsspeichers, der mit den Anforderungen Ihres ausführungsprogramms dynamisch wächst und verkleinert. Ihre Grenzwerte wurden überschritten.

So beheben Sie diesen Fehler

  1. Überprüfen Sie, ob Prozeduren nicht zu tief geschachtelt sind.

  2. Stellen Sie sicher, dass rekursive Prozeduren ordnungsgemäß beendet werden.

  3. Wenn lokale Variablen mehr lokalen Variablenbereich benötigen, als verfügbar ist, versuchen Sie, einige Variablen auf Modulebene zu deklarieren. Sie können auch alle Variablen in der Prozedur statisch deklarieren, indem Sie dem Schlüsselwort Function oder Subdem PropertySchlüsselwort Staticvorangehen. Sie können die Static Anweisung auch verwenden, um einzelne statische Variablen innerhalb von Prozeduren zu deklarieren.

  4. Definieren Sie einige Ihrer Zeichenfolgen mit fester Länge als Zeichenfolgen mit variabler Länge neu, da Zeichenfolgen mit fester Länge mehr Stapelraum als Zeichenfolgen mit variabler Länge verwenden. Sie können die Zeichenfolge auch auf Modulebene definieren, bei der kein Stapelspeicher erforderlich ist.

  5. Überprüfen Sie die Anzahl der geschachtelten Funktionsaufrufe DoEvents mithilfe des Calls Dialogfelds, um anzuzeigen, welche Prozeduren im Stapel aktiv sind.

  6. Stellen Sie sicher, dass Sie keine "Ereigniskaskade" verursacht haben, indem Sie ein Ereignis auslösen, das bereits im Stapel eine Ereignisprozedur aufruft. Eine Ereigniskaskade ähnelt einem unterminierten rekursiven Prozeduraufruf, ist aber weniger offensichtlich, da der Aufruf von Visual Basic statt eines expliziten Aufrufs im Code erfolgt. Verwenden Sie das Calls Dialogfeld, um anzuzeigen, welche Prozeduren im Stapel aktiv sind.

Siehe auch