Brak miejsca na stosie (Visual Basic)

Stos to obszar roboczy pamięci, który rośnie i zmniejsza się dynamicznie wraz z wymaganiami wykonywanego programu. Przekroczono limity.

Aby naprawić ten błąd

  1. Sprawdź, czy procedury nie są zbyt głęboko zagnieżdżone.

  2. Upewnij się, że procedury cyklicznego kończą się prawidłowo.

  3. Jeśli zmienne lokalne wymagają więcej miejsca na zmienne lokalne niż jest dostępne, spróbuj zadeklarować pewne zmienne na poziomie modułu. Można również zadeklarować wszystkie zmienne w procedurze statycznej, poprzedzając Propertysłowo kluczowe , Sub, lub Function za pomocą Staticpolecenia . Możesz też użyć instrukcji , Static aby zadeklarować poszczególne zmienne statyczne w ramach procedur.

  4. Ponownie zdefiniuj niektóre ciągi o stałej długości jako ciągi o zmiennej długości, ponieważ ciągi o stałej długości używają więcej miejsca na stosie niż ciągi o zmiennej długości. Można również zdefiniować ciąg na poziomie modułu, w którym nie wymaga miejsca na stosie.

  5. Sprawdź liczbę zagnieżdżonych DoEvents wywołań funkcji, korzystając z okna dialogowego Calls , aby wyświetlić, które procedury są aktywne na stosie.

  6. Upewnij się, że kaskada zdarzeń nie została wywołana przez wyzwolenie zdarzenia, które wywołuje procedurę zdarzenia już na stosie. Kaskada zdarzenia jest podobna do nieokreślonego wywołania procedury cyklicznego, ale jest mniej oczywiste, ponieważ wywołanie jest wykonywane przez język Visual Basic, a nie jawne wywołanie w kodzie. Użyj okna dialogowego Calls , aby wyświetlić, które procedury są aktywne na stosie.

Zobacz także