Es scheint, dass Ihr Programm unangemessen viel Speicher benötigt (vielleicht wegen zu vieler Template-Erweiterungen).
Verwenden eines aktuellen g++-trunk
:
gcc version 4.8.0 20121026 (experimental) [trunk revision 192860] (GCC)
mit den folgenden zsh-Limits:
% limit
cputime unlimited
filesize unlimited
datasize 15000MB
stacksize 8MB
coredumpsize 400MB
memoryuse 15000MB
maxproc 128166
descriptors 1024
memorylocked 64kB
addressspace 16000MB
maxfilelocks unlimited
sigpending 128166
msgqueue 819200
nice 0
rt_priority 0
rt_time unlimited
(dies auf Debian/Sid/AMD64 mit i3770K Intel-Prozessor und 16 GB RAM)
Ich bekomme:
% time g++-trunk -std=gnu++11 andrew.cc -o andrew
virtual memory exhausted: Cannot allocate memory
g++-trunk -std=gnu++11 andrew.cc -o andrew :
108.25s user 3.28s system 89% cpu 2:03.98 total
Es scheint also, dass die Vorlagenerweiterung so viel Speicher benötigt, dass Ihre Programmierung nicht sinnvoll ist.
Ich bin mir nicht sicher, ob dies als GCC-Fehler akzeptiert wird. Die Makroerweiterung für C++-Vorlagen ist bekanntermaßen Turing-komplett und Sie stoßen einfach an die Wand. Und der GCC-Trunk meldet einen schwerwiegenden, aber verständlichen Fehler.
Die Moral der Geschichte könnte darin bestehen, rlimit(2) angemessen zu setzen (mit Grenzen, die mit Ihrem System und Ihrer Hardware kompatibel sind), vielleicht mit limit
zsh eingebaut oder ulimit
bash eingebaut.