Thema: Delphi EStackOverflow???

Einzelnen Beitrag anzeigen

Chewie

Registriert seit: 10. Jun 2002
Ort: Deidesheim
2.886 Beiträge
 
Turbo Delphi für Win32
 
#11

Re: EStackOverflow???

  Alt 26. Mai 2004, 18:57
Der Nachteil kann halt sein, dass der Stack zu groß wird und dann der Speicher knapp wird.
Solange du ihn aber in Maßen vergrößerst, sollte das nicht passieren.

Zum Thema Stack und Heap:
Jede Prozedur hat einen Stack, das heißt übersetzt Stapel. Dort werden zu Beginn die Übergabeparameter aufgestapelt, ganz unten liegt die Rücksprungadresse zu dem Punkt, von dem die Prozedur aufgerufen wurde. Auch lokale Variablen werden auf diesem Stack gespeichert. Dieser Stackspeicher ist aus verschiedenen Sicherheitsgründen recht begrenzt, deshalb der Stack Overflow.

Der Heap dagegen ist ein globaler Speicherbereich, der über die Prozeduren hinaus verfügbar ist. Beispielsweise werden dort alle Objekte werden dort abgelegt.
Was du nun machen könntest, wäre dir einen Zeiger auf dein Array zu erzeugen und das Array mit der richtigen Größe auf dem Heap via GetMem bzw. New zu erzeugen. Dann wäre der Speicherplatz nur durch den verfügbaren virtuellen Speicher begrenzt. Allerdings müsstest du dann den Speicher seblbst wieder freigeben (FreeMem bzw. Dispose).
Martin Leim
Egal wie dumm man selbst ist, es gibt immer andere, die noch dümmer sind
  Mit Zitat antworten Zitat