AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Object-Pascal / Delphi-Language Delphi Stack Overflow trotz iterativen Algorithmus
Thema durchsuchen
Ansicht
Themen-Optionen

Stack Overflow trotz iterativen Algorithmus

Ein Thema von stoxx · begonnen am 23. Aug 2003 · letzter Beitrag vom 24. Aug 2003
Antwort Antwort
Seite 2 von 2     12   
Christian Seehase
(Co-Admin)

Registriert seit: 29. Mai 2002
Ort: Hamburg
11.117 Beiträge
 
Delphi 11 Alexandria
 
#11

Re: Stack Overflow trotz iterativen Algorithmus

  Alt 23. Aug 2003, 21:43
Moin Assarbad,

Zitat von Assarbad:
Je nach Rekursionstiefe wird also die Menge und größe der lokalen Variablen (und natürlich auch der allozierten Heapbereiche auf den Speicherbedarf Einfuß nehmen.
ähhh... eine iterative Routine hat doch aber keine Rekursionstiefe, alldieweil sie ja eben nicht rekursiv ist.
Tschüss Chris
Die drei Feinde des Programmierers: Sonne, Frischluft und dieses unerträgliche Gebrüll der Vögel.
Der Klügere gibt solange nach bis er der Dumme ist
  Mit Zitat antworten Zitat
Assarbad
(Gast)

n/a Beiträge
 
#12

Re: Stack Overflow trotz iterativen Algorithmus

  Alt 23. Aug 2003, 21:45
...

Mein Fehler, sorry.
  Mit Zitat antworten Zitat
Chewie

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

Re: Stack Overflow trotz iterativen Algorithmus

  Alt 23. Aug 2003, 21:52
Zitat von Assarbad:
Für jede neue "Instanz" einer iterativen Routine werden die lokalen Variablen neu auf dem Stack plaziert (denn jede hat ja ihre privaten lokalen Variablen).

Der Titel sollte also eher heißen: "Stack Overflow wegen iterativem Algorithmus" ... denn das ist eine allgemeine Gefahr bei Iterationen!
Damit hat sich dann auch erledigt, oder
Martin Leim
Egal wie dumm man selbst ist, es gibt immer andere, die noch dümmer sind
  Mit Zitat antworten Zitat
Assarbad
(Gast)

n/a Beiträge
 
#14

Re: Stack Overflow trotz iterativen Algorithmus

  Alt 23. Aug 2003, 22:19
Jupp ... ich ersetze gleich Iteration duch Rekursion ... war wie gesagt mein Fehler. Hätte mir ja nur den Code näher anschauen müssen ... irgendwie war bei mir noch so im Hinterkopf, es ginge um Dateisuche :-/
  Mit Zitat antworten Zitat
Benutzerbild von stoxx
stoxx

Registriert seit: 13. Aug 2003
1.111 Beiträge
 
#15

Re: Stack Overflow trotz iterativen Algorithmus

  Alt 24. Aug 2003, 14:25
Hallo zusammen,

also es war nach meiner Änderung im Quelltext doch nicht behoben.
Es lag letztendlich daran, dass ich die search Methode einfach so deklariert habe.
Jetzt habe ich sie als Methode vom Object declariert, und der Stackoverflow kommt nicht mehr.
Jetzt kommt aber eine neue Exceptionn, dass ich zu wenig Arbeitsspeicher hätte.
Das ist aber Quark !

Denn wenn ich folgende Funktion starte, wird meine Exe 399 MB groß !!
ohne Probleme.
Aber bei meiner Berechnung nur 52 MB .. trotzdem kommt diese dämliche Fehlermeldung ?
Weiss nicht mehr weiter ...

Delphi-Quellcode:
procedure TForm5.Button58Click(Sender: TObject);
var ar : array of integer;
   i : longint;
begin

i := 100000000;
setlength(ar,i);

for i := 0 to length(ar) -1 do ar[i] := 5;
showmessage('warte');
end;
  Mit Zitat antworten Zitat
Assarbad
(Gast)

n/a Beiträge
 
#16

Re: Stack Overflow trotz iterativen Algorithmus

  Alt 24. Aug 2003, 16:06
sizeof(Integer) = 4
4 * 100000000 ~~ 400MB

Außerdem würde man das nie so machen, sondern immer den Speicher direkt DWORD-weise überschreiben ... Zumindest wird deine Variante sehr langsam.

Vielleicht sagst du einfach nochmal, was du eigentlich vorhast. Hier sollte man wohl stärker optimieren :-/
  Mit Zitat antworten Zitat
Benutzerbild von stoxx
stoxx

Registriert seit: 13. Aug 2003
1.111 Beiträge
 
#17

Re: Stack Overflow trotz iterativen Algorithmus

  Alt 24. Aug 2003, 16:31
Zitat von Assarbad:
sizeof(Integer) = 4
4 * 100000000 ~~ 400MB

Außerdem würde man das nie so machen, sondern immer den Speicher direkt DWORD-weise überschreiben ... Zumindest wird deine Variante sehr langsam.

Vielleicht sagst du einfach nochmal, was du eigentlich vorhast. Hier sollte man wohl stärker optimieren :-/
Hi .. dieses Array mit 100000000 Elementen war ja nur zum testen, ob es an der Größe des Arrays liegt und mein Speicher zu klei ist, und ob ein array am ende einer Procedure wieder automatisch freigegeben wird, ohne setlength(ar,0) zu setzen. Das wird gemacht


Wie meinst Du das mit DWORD Weise ?

Ich bekomm die Fehlermeldung nicht weg ..
es tritt immer die Fehlermeldung auf, dass ich zu wenig Arbeitsspeicher hätte .. versteh das nicht
  Mit Zitat antworten Zitat
Benutzerbild von stoxx
stoxx

Registriert seit: 13. Aug 2003
1.111 Beiträge
 
#18

Re: Stack Overflow trotz iterativen Algorithmus

  Alt 24. Aug 2003, 17:29
Hi,


habt vielen Dank für Eure Hilfe, das Problem hat sich jetzt erledigt,
hab von arrays auf TList umgestellt.
Da funktioniert das wunderbar und geht auch viel viel schneller .. und die Daten sind auch viel viel kleiner alles.
(wenn man in Tlist list.insert(i) benutzt und somit nur pointer umkopiert, geht das schneller als wenn man grosse Datenstrukturen in einem Array umkopieren muss)
Irgendwie muss Delphi arrays mehrfach anlegen (bei procedure Übergaben oder was weiss ich)

ist jedenfalls irgendwie nicht normal ...
aber egal ..
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 2     12   


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 18:41 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