Ich habe ein Programm mit Compaq Visual Fortran geschrieben. Das Programm ist in Ordnung und läuft in vielen Fällen korrekt. Der Fall arbeite ich an ist jetzt größer, mit größeren Eingabedatendateien und wenn ich das Programm Ich habe folgende Fehler ausgeführt:Stack Overflow mit Fortran
forrtl: severe(170): Program exception - stack overflow
Ich habe das editbin.exe
Programm installiert, aber ich weiß wirklich nicht, wie man benutze es. Wenn
editbin /STACK:4000000 DFDEV.exe
es sagt mir, dass es nicht DFDEV.exe
öffnen kann, auch wenn ich in das Verzeichnis bin dieses Programm enthält (C: \ Programme \ Microsoft Visual Studio \ Common \ MSDev98 \ BIN). Ich weiß wirklich nicht, wie ich dieses Problem lösen soll und in jedem Thema, das ich zu diesem Thema im Internet gefunden habe, gibt es keine Erklärung dafür, wie man dieses Editbin-Programm benutzt.
Vielleicht müssen Sie bei der Ausführung von 'editbin' den vollständigen Pfad zu' DFDEV.exe' angeben. Wenn Sie einfach 'editbin' in die Befehlszeile eingeben, ohne eine andere Eingabe als die Befehlszeile, [erhalten Sie eine Verwendungsanweisung, die die Editbin-Optionen zusammenfasst] (http://msdn.microsoft.com/en-us/library/xd3shwhf % 28v = vs.80% 29.aspx). Wenn Sie jedoch nicht wissen, wie man mit editbin arbeitet, was bringt Sie zu der Annahme, dass es das richtige Werkzeug für die Aufgabe ist (das Debuggen Ihres Programmausnahmefehlers)? – Chris
Wenn Ihr Problem darin besteht, dass Ihre Daten zu groß sind, um auf den Stapel zu passen, können Sie stattdessen die Zuweisung auf dem Heap in Betracht ziehen. –
+1 zu @ DavidHeffernans Kommentar; Insbesondere bei älteren Fortran-Programmen, die keine dynamische Zuweisung verwenden, bedeutet Stack Overflow fast immer, dass große, statische Arrays in Subroutinen oder Funktionen zu groß geworden sind, um auf den Stack zu passen. Abhängig von Ihrem Betriebssystem gibt es Workarounds, oder Sie können Ihren Compiler dazu verleiten, große Arrays auf dem Heap zuzuordnen, aber das Beste von allem ist, dass Sie anfangen, auf solche großen statischen Arrays zu verzichten und diese stattdessen nach Bedarf zuzuweisen. –