C++ Builder 10.3 Compiler-Fehler F1008 Zu wenig Arbeitsspeicher
-
Hallo,
ich habe das RAD-Studio von XE2 auf 10.3 Rio upgedatet.
Mein Projekt ist sehr umfangreich und besteht aus über 1000 Dateien.
Beim Compilieren (klassischer Borland-Compiler) kommt bei einigen Dateien die Fehlermeldung [C++ Error] sysdyn.h(261): F1008 Zu wenig ArbeitsspeicherBei Embarcadreo findet man diesen Hinweis, der aber auch nicht unbedingt weiterhilft:
[http://docwiki.embarcadero.com/RADStudio/Rio/de/F1008_Zu_wenig_Arbeitsspeicher_(C%2B%2B)]Im Editor wird dann immer die Datei sysdyn.h geöffnet und diese Zeile selektiert:
{ return reinterpret_cast<const TDynArrayRec>(Data)[-1]; }*sysdyn.h ist eine von Embarcadero mitgelieferte Datei.
Ich verwende TwineCompile und der Rechner hat 8GB Arbeitsspeicher.Kennt jemand diese Fehlermeldung bzw. hat jemand eine Idee, was der Auslöser sein könnte?
Bei XE2 hat das Compilieren problemlos funktioniert.
-
Machst du Template-Metaprogrammierung? Das ist der einzige Fall, wo mir so etwas je begegnet ist, wenn man da versehentlich eine zu tiefe Rekursion baut.
-
@SeppJ sagte in C++ Builder 10.3 Compiler-Fehler F1008 Zu wenig Arbeitsspeicher:
Template-Metaprogrammierung
Nein, zumindest nicht bewußt, wobei mir der Begriff auch nicht so geläufig ist.
Ich habe auf jeden Fall keine selbst geschriebenen Templates, verwende aber sehr oft std::list und std::map.
-
@j-halder sagte in C++ Builder 10.3 Compiler-Fehler F1008 Zu wenig Arbeitsspeicher:
TwineCompile
Ruft mehrere Compiler gleichzeitig auf?
Ich kenne das Problem von anderen Compilern: nach einem Upgrade verbrauchen die Prozesse mehr Arbeitsspeicher, man muss die Zahl der gleichzeitig laufenden Prozesse reduzieren.
-
@manni66
Der Fehler kommt auch wenn ich TwinCompile abschalte oder die Dateien einzeln compiliere.Und die Speicherauslastung geht auch nicht merklich hoch.
Es sind oft noch 4-5GB verfügbar.
-
@j-halder sagte in C++ Builder 10.3 Compiler-Fehler F1008 Zu wenig Arbeitsspeicher:
@SeppJ sagte in C++ Builder 10.3 Compiler-Fehler F1008 Zu wenig Arbeitsspeicher:
Template-Metaprogrammierung
Nein, zumindest nicht bewußt, wobei mir der Begriff auch nicht so geläufig ist.
Ich habe auf jeden Fall keine selbst geschriebenen Templates, verwende aber sehr oft std::list und std::map.Dann ist es das nicht. Wenn man nicht weiß, was TMP ist, dann stößt man da auch nicht zufällig drauf
-
Es reicht oft wenn man diverse Boost Libraries verwendet. Die verwenden dann intern hübsch TMP. Mit nem 32 Bit Compiler (Compiler .exe, nicht Target) bekommt man da schnell ein Problem. Die Fehlermeldung ist dann dummerweise auch "out of memory", obwohl das eigentliche Problem "out of address space" ist.
-
Ihr macht euch da zu viele Gedanken über die Ursachen. Der klassische Borland Compiler (bcc32.exe, nicht der Clang-Compiler bcc32c.exe) ist buggy wie hulle. Das zieht sich bei uns seit dem Codegear RAD Studio 2007 bis zum RAD Studio 10.1 Berlin. Projekte lassen sich von jetzt auf gleich nicht mehr übersetzen, der Compiler meldet entweder interne Compiler Fehler oder zu wenig Arbeitsspeicher. Das ist nicht reproduzierbar, manchmal hilft es die Reihenfolge der #include-Anweisungen zu ändern, das RAD Studio oder den Rechner neu zu starten. Alles in Allem nicht nachvollziehbar und scheinbar willkürlich. Der einzige funktionierende Weg war die Benutzung des clang-Compilers statt des klassichen Compilers.
-
@DocShoe Bei mir hat noch Twine Compile geholfen, ich hatte öfters den Fehler "Not enough Savemem".
-
@DocShoe OK, wenn du das sagst glaub ich es dir mal. Ich wollte nur anmerken dass man gar nicht selbst TMP verwenden muss um da ein Problem zu bekommen. Wenn der Compiler das auch selbst "kann", ganz ohne TMP & Co, ist das natürlich auch eine mögliche Erklärung.