C++ Stack overflow verhindern

Schnelle objektorientierte, kompilierende Programmiersprache.
Antworten
Benutzeravatar
cloidnerux
Moderator
Beiträge: 3125
Registriert: Fr Sep 26, 2008 4:37 pm
Wohnort: Ram (Gibts wirklich)

C++ Stack overflow verhindern

Beitrag von cloidnerux » Di Mai 10, 2011 6:26 pm

So, zu meinem Problem.
Ich habe eine Baumstruktur mit einer relativ tiefen Verschachtelung.
Jetzt will ich einen befehl ausführen, der jedem Unterpunkt(die vom Selben typ/basistyp sind) eben jenen Befehl selbst auszuführen. Die Letzten Elemente führen dann den Befehl wirklich aus und sollen dann zurückgeben.
Das Problem meiner zu Komplexen und wirren Erklärung: Ich bekomme einen Stack overflow, weil ich wahrscheinlich zu viele unbeendete Funktionsaufrufe habe.
Frage: Wie umgehe ich das, wie behebe ich das?

Edit: Lösung 1: heap und Stackgröße in den Projekteigenschaften ändern -> Quick&Dirty
Lösung 2: Mir einen eigenen heap basteln in dem ich die Funktionszeiger der als nächstes aufzurufenden Funktionen samt Parameter reinschmeiße und in nem Speraten Thread ausführe-> Hackerlösung, Gefärlich, evt Instabil und Speicherhungrig.

Edit 2: Problem vorerst behoben, hatte eine Endlosschleife und damit auch den Overflow.
Redundanz macht wiederholen unnötig.
quod erat expectandum

Benutzeravatar
Xin
nur zu Besuch hier
Beiträge: 8862
Registriert: Fr Jul 04, 2008 11:10 pm
Wohnort: /home/xin
Kontaktdaten:

Re: C++ Stack overflow verhindern

Beitrag von Xin » Di Mai 10, 2011 9:32 pm

cloidnerux hat geschrieben:Edit 2: Problem vorerst behoben, hatte eine Endlosschleife und damit auch den Overflow.
Das hatte ich eigentlich vermutet, denn ich weiß zwar nicht wie komplex Dein Baum ist, aber ich vermute mal nicht, dass es sich um tausende Hierarchie-Ebenen handelt?
Merke: Wer Ordnung hellt ist nicht zwangsläufig eine Leuchte.

Ich beantworte keine generellen Programmierfragen per PN oder Mail. Dafür ist das Forum da.

Benutzeravatar
cloidnerux
Moderator
Beiträge: 3125
Registriert: Fr Sep 26, 2008 4:37 pm
Wohnort: Ram (Gibts wirklich)

Re: C++ Stack overflow verhindern

Beitrag von cloidnerux » Di Mai 10, 2011 9:38 pm

sich um tausende Hierarchie-Ebenen handelt?
Kann gut vorkommen. Der Baum wird Iteriert aufgebaut. Ich hab bei dem Test 2 Iterationen machen lassen was ca 5 Ebenen pro Iteration ausmacht. 5^4 ist dann schon 625 Ebenen und 5^5 wären schon tolle 3125 Ebenen.
Das heißt für mich, iwann wär der Fehler eh aufgetreten.
Redundanz macht wiederholen unnötig.
quod erat expectandum

Benutzeravatar
Xin
nur zu Besuch hier
Beiträge: 8862
Registriert: Fr Jul 04, 2008 11:10 pm
Wohnort: /home/xin
Kontaktdaten:

Re: C++ Stack overflow verhindern

Beitrag von Xin » Di Mai 10, 2011 9:54 pm

cloidnerux hat geschrieben:
sich um tausende Hierarchie-Ebenen handelt?
Kann gut vorkommen. Der Baum wird Iteriert aufgebaut. Ich hab bei dem Test 2 Iterationen machen lassen was ca 5 Ebenen pro Iteration ausmacht. 5^4 ist dann schon 625 Ebenen und 5^5 wären schon tolle 3125 Ebenen.
Das heißt für mich, iwann wär der Fehler eh aufgetreten.
3000 Hierarchieebenen sind aber auch noch nicht teuer. Bei einem Methode sind das 25kB Stackverbrauch. Hast Du einen Parameter und eine RÜckgabe kommst Du auf 50kB. Auf einem 64Bit 100kB.

Das sind heute wohl keine Marken mehr.
Merke: Wer Ordnung hellt ist nicht zwangsläufig eine Leuchte.

Ich beantworte keine generellen Programmierfragen per PN oder Mail. Dafür ist das Forum da.

Antworten