Dela via


Slut på stackutrymme (Visual Basic)

Stacken är ett arbetsområde med minne som växer och krymper dynamiskt med kraven från ditt körprogram. Dess gränser har överskridits.

Så här åtgärdar du det här felet

  1. Kontrollera att procedurerna inte är kapslade för djupt.

  2. Se till att rekursiva procedurer avslutas korrekt.

  3. Om lokala variabler kräver mer lokalt variabelutrymme än vad som är tillgängligt kan du prova att deklarera vissa variabler på modulnivå. Du kan också deklarera alla variabler i proceduren statiska genom att föregå nyckelordet Property, Subeller Function med Static. Du kan också använda -instruktionen Static för att deklarera enskilda statiska variabler inom procedurer.

  4. Omdefiniera vissa av dina strängar med fast längd som strängar med variabel längd, eftersom strängar med fast längd använder mer stackutrymme än strängar med variabel längd. Du kan också definiera strängen på modulnivå där den inte kräver något stackutrymme.

  5. Markera antalet kapslade funktionsanrop DoEvents med hjälp Calls av dialogrutan för att visa vilka procedurer som är aktiva i stacken.

  6. Kontrollera att du inte orsakade en "händelsekaskad" genom att utlösa en händelse som anropar en händelseprocedur som redan finns i stacken. En händelsekaskad liknar ett obestämt rekursivt proceduranrop, men det är mindre uppenbart eftersom anropet görs av Visual Basic i stället för ett explicit anrop i koden. Calls Använd dialogrutan för att visa vilka procedurer som är aktiva i stacken.

Se även