Stack Overflow

Anfängerfragen zum Programmieren mit PureBasic.
Benutzeravatar
remi_meier
Beiträge: 1078
Registriert: 29.08.2004 20:11
Wohnort: Schweiz

Beitrag von remi_meier »

Jap, vermeiden wäre besser! Aber z. B. bei Danilos Beispiel vom rekursiven
Scannen von Verzeichnissen kann es schon Probleme geben. Ich glaube
nicht, dass jeder im Stande ist oder jedes mal ausrechnen will, welche
Rekursionstiefe erreicht werden kann und dann eine Abfrage einbaut!

Was ich übrigens vergessen habe zu sagen: Beim PBOSL-Code sollte
trotzdem möglichst bald das Programm beendet werden, denn PB säubert
am Ende einer Prozedur noch manchmal irgendwelche Sachen, was bei
einer Exception jedoch nicht mehr der Fall ist! Dadurch gibt es Speicher-
fehler oder Schlimmeres (weiss nicht was z. B. bei Threadsafe und Strings
so passiert...).

Aber immerhin kann man so darauf reagieren und dem Benutzer sagen,
was abläuft, sowie normal beenden :)
Benutzeravatar
uweb
Beiträge: 461
Registriert: 13.07.2005 08:39

Beitrag von uweb »

Beim rekursiven Scannen von Verzeichnissen wäre ich

entweder frech und würde mir einen großen Happen (die Größe brauche ich ja nicht jedesmal neu festlegen) schnappen und unterwegs die Grenze im Auge behalten (schnell)

oder brav und würde mir wie gesagt mit weiten Grenzen unterwegs Häppchen holen (etwas langsamer).

Klar, wenn sich die Größe nicht im voraus ermitteln läßt kann man deren Erreichen auch nicht vorhersagen. Wenn sie sich aber ermitteln läßt muß nicht unbedingt irgendwer irgendetwas tun. Dafür haben wir doch unsere E-Brain-Extension.
Benutzeravatar
remi_meier
Beiträge: 1078
Registriert: 29.08.2004 20:11
Wohnort: Schweiz

Beitrag von remi_meier »

Hab zwar deine Methode oben nicht ganz verstanden, aber gut, wenn du
damit zurecht kommst :allright:

Es gibt "leider" sehr viele "Probleme", welche sich nur durch Rekursion
elegant lösen lassen. Glaub mir, du willst nicht jedes Mal stundenlang über
einer Prozedur brüten bis du sie garantiert stacksicher gemacht hast, da
zumal bei Tests der Fehler oft nicht erkannt wird.
Fehlerbehandlung gehört sowieso zu jedem Projekt, Stack Overflows lassen
sich, wie (fast) jeder Fehler vermeiden, dennoch kommen sie noch sehr
sehr oft vor...


greetz
Remi

Edit: Ganz einfacher Fall, wo du den StackOverflow sehr schlecht abschätzen
kannst: Dein Programm baut auf sehr vielen Prozeduren auf, wodurch
automatisch ein grosser Stackbedarf entsteht, nebenbei hast du nun noch
eine nur leicht rekursive Funktion, die nunmal ein wenig zuviel braucht,
was eigentlich fast nicht berechenbar ist.
Kaeru Gaman
Beiträge: 17389
Registriert: 10.11.2004 03:22

Beitrag von Kaeru Gaman »

tja...

mein wunsch für PB 9.0 : dynamischer Stack
Der Narr denkt er sei ein weiser Mann.
Der Weise weiß, dass er ein Narr ist.
Antworten