Fehler: Stack Overflow
-
step: if(QueryServer()) { while(!PutFiles()) { MSG msg; while(::PeekMessage(&msg, NULL, NULL, NULL, PM_NOREMOVE)) { AfxGetThread()->PumpMessage(); } } goto step; } else { MSG msg; while(::PeekMessage(&msg, NULL, NULL, NULL, PM_NOREMOVE)) { AfxGetThread()->PumpMessage(); } goto step; }
Beim Aufruf der Funktion QueryServer taucht die o.g. Fehlermeldung auf.
Er springt aber erst gar nicht in diese Funktion. dort wird kein Haltepunkt angelaufen.
Auch, wenn ich in die erste Zeile der Funktion eine MessageBox setze, wird diese nicht gezeigt, sondern es scheint sofort die Fehlermeldung. Es ist auch egal, wie ich die Funktion aufrufe.
Irgendwie ist es eher so, als ob in der Festplatte an der Stelle, wo der Quellcode lagert, ein Loch ist.
Weiß einer Rat?
Danke
Jens
-
goto in C++ zu benutzen ist ein ganz schlechter stil, da stimmt irgendwas in deinem Funktionsaufbau nicht, hab ich noch nie benutzt und auch noch nie gebraucht, das nur am rande.
Ich würde ja mal an deiner stelle mit dem Debuger in QueryServer rein springen und schaun was da passiert. Die Sache mit dem PumpMessage() sieht so aus als würdest du in einem Händler eines Dialoges oder so das laufen lassen und damit versuchen die Messages deines Windows mit durchzuschläußen, besser ist das in einen Thread auszulagern und Nachrichten per PostMessage an dein Window zu schicken, falls das nötig sein sollte.
-
Hallo CTecS,
Der Fehler ist klar: "Stack Overflow"
Bitte das goto nicht missverstehen es ist eindeutig und zweifelsfrei!
Die durch das 2. goto entstande Loop pusht immer wieder
MSG msg;
auf den Stack, weil es den Scope nicht verlässt ...
Irgendwann kommt es dann zum Stack Overflow.Außerdem läuft der Code 'busy' ...
Sieht so aus, als ob du noch was daran arbeiten musst ...Gruß Frank
-
Frank Erdorf schrieb:
Die durch das 2. goto entstande Loop pusht immer wieder
MSG msg;
auf den Stack, weil es den Scope nicht verlässt ...
Quatsch!
Der Compiler reserviert einmal bei Eintritt dem Speicher auch für diese Variable auf dem Stack. Da wird gar nichts gepushed.An dem gezeigten Code Auschnitt liegt es mit 100% nicht!