An alle Borland-Nutzer/Besitzer
-
Auf der Suche nach den neuesten Fehler bin ich heute Nachmittag auf einen Code-Zwerg gestoßen,den der Bcc32,Ver 5.5 anscheinend nicht schafft.Ich vermute,das dies an den begrenzten Ressourcen meines Systems liegt (64MB-RAM),daher wäre es schön,wenn ihr mal versucht,denn folgenden Code zu compilieren,und mir sagt,was dabei passiert ist.
int main(void) { int richtig_gross[234881025]={0};//Fragt bitte nicht warum,wozu oder wieso!Ist halt ein Test! return 0; }
THX schon mal dafür.
ghost_error.
-
Hi!!!
habe deinen Code mal compilieren wollen...
Es gab keinen Error; er hat einfach gar nichts gemacht (das ist schon etwas komisch, ne Fehlermeldung waer schon angebracht).
Aber er bringt schon einen Stack-Überlauf bei kleineren Werten, wie zB: 2322111Arrays dieser Grösse kann man nicht definieren.
Falls du die RAM Kapazität von dir mal voll nutzen willst, dann versuchs doch mit malloc()
cu,
LukasPS: Habe 1024MB RAM und Borland C++ Builder 5.0
-
Hmmm...
Ja,ich weiß,das ich malloc() ud Co. mir versuchen kann den gesamten RAM (oder beinahe) Untertan zu machen.Aber in diesem Fall ging es mir um eine Grenze des Compilers.
Etwas wird er schon bei dir gemacht haben...bei mir hat er nach 5 Minuten Festplatte schreddern immernoch nichts wirklich produziert,daher mußte ich ihn gwaltsam beenden.
Aber danke schon mal für deine Antwort.
g_e.
-
Hi!!!
NEIN, er hat keine 5min geschreddert, sondern nach dem click auf den Pfeil kurz aufgeblinkt und dann nix gemacht.
Und es stand auch kein Error dabei.
Allerdings, habe ich dann einen groesseren Wert, als deinen genommen (also nochmal eine 5 hinten dran) und dann hat er wie du beschrieben hast, das Compiler Fenster gebracht aber ich habe keine 5min gewartet, sondern gesehen, dass er nach 30sec immernoch nicht fertig war und habe dann selber abgebrochen (Programm terminated).naja...
cu,
Lukas[ Dieser Beitrag wurde am 08.06.2002 um 18:48 Uhr von Consystor editiert. ]
-
Was denn,gibt nicht noch mehr BCC-Nutzer,oder sind die alle am Wochenende nicht im Netz?
Auf alle Fälle schon mal Dank an dich,Consystor,das erklärt doch schon mehr.
MFG,
g_e.
-
Da dürfte so mancher Compiler Probleme haben, denn die Variable wird in einer Funktion erzeugt, ist also lokal und wird damit normalerweise auf den Stack gelegt, und der ist limitiert.
Macht es global oder static und versucht es nochmal.
-
Die Idee ist gut...der compiler jedoch schlecht.:-D
Also,weder bei global,noch bei static,noch bei beiden läßt sich der Bcc32 zu ne' anderen Ausgabe hinreißen.
Hat noch keiner von euch das geschafft?
-
hi,
ich selbst benutzte keine BCB aber hab den code mal mit dem VC++6 compiliert und gestartet bei mir kam sofort eine meldung:
"Unbehandelte Ausnahme in test.exe:0xC00000FD: Stack Overflow."Aber nur wenn ich im debug modus bin im release modus startet das programm, ein consolen fenster wird kurz angezeigt und dann wieder geschlossenm und ohne einer Fehlermeldung.
-
ich verstehe das Problem nicht...
Solange man keine Debug Version kompiliert wirds bei einem Stack Overflow einfach nur unsinn geben. Bei einer Debug Version muesste theoretisch die Meldun "Stack Overflow" oder aehnliches kommen.
der bcc hat doch eh einen Stack Guard oder Memory Guard oder wie der Kaese heisst. Schaltet den mal ein, dann werdet ihr sicher sinnvollere Resultate erhalten.
Aber worauf wollt ihr hinaus?
-
Der Bcc32 hat einen Code-Guard,das hat damit aber nichts zu tun(zumal der nur beim BCB dabei ist).
Das Problem ist einfach,ob dieser Code von Maschine zu Maschine unterschiedliche Compiler-Meldungen erzeugt,und ob er überhaupt Compiliert werden kann.Doch anscheinend geht das überhaupt nicht mit dem bcc32,also hat der irgendwo doch interne Grenzen,was Felder usw. angeht,und definiert die offensichtlich nicht über die verfügbaren Ressourcen.
Mehr nicht.
g_e.