Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Stack Size (https://www.delphipraxis.net/35555-stack-size.html)

Coolboarder_9 8. Dez 2004 22:38


Stack Size
 
ok, hallo erstma. Ich hab da ein Problem: ich programmier mit nem Freund ein Programm für ein Institut, was Bilddaten auswerten soll, es ist natürlich wirksam, die Daten aus dem Bild als Wuelle auszulesen und in nem Array zu speichern. Problem: 512*512 Pixel, macht bei einer Integer-Zahl von bekanntlich 4 Byte größe insgesamt 1 MB, dazu kommen noch zwei Zählvariablen zum Auswerten --> Stack Overflow

kann sein dass die Frage schonma gestellt wurde, aber ich habs auf die Schnelle nich gefunden:
Wie verändert man die MaxStackSize? Hab da was in der Help gefunden, komm damit aber nich so sonderlich klar...
MfG

Luckie 9. Dez 2004 03:07

Re: Stack Size
 
Das ist ein Compiler-Schalter:
Delphi-Quellcode:
{$MAXSTACKSIZE $00100000}
Kann man aber auch in den Projektoptionen -> Linker einstellen.

Allerdings halte ich es nicht für eine gute Idee. Es gibt nur sehr wenige Außnahmefälle, in denen man einen größeren Stack braucht. Ich würde fast darauf wetten, dass ihr da irgendwo einen Designfehler in eurem Code habt. Desweiteren wird der Speicher für euer Array, meiner Meinung nach, nicht auf dem Stack reserviert. Auf dem Stack landen Parameter, Funktionsrückgabewerte und Rücksprungadressen, deswegen kommt es meist bei fehlerhaften implementierten rekursiven Funktionen zu einem Stack-Overflow.

jim_raynor 9. Dez 2004 06:19

Re: Stack Size
 
Zitat:

Zitat von Luckie
Desweiteren wird der Speicher für euer Array, meiner Meinung nach, nicht auf dem Stack reserviert. Auf dem Stack landen Parameter, Funktionsrückgabewerte und Rücksprungadressen,

und lokale statische Arrays. Und genau das könnte auch das Problem sein. Nutzt einfach ein dynamisches Array.

Delphi-Quellcode:
var
  Matrix: Array of Array of Integer;
begin
  SetLength(Matrix,512,512);
Dann dürfte es keine Probleme geben sofern es sich um dieses Problem handelt.


Alle Zeitangaben in WEZ +1. Es ist jetzt 16:01 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz