Я написал очень маленькую программу:
#include <array>
#include <tuple>
#include <iostream>
const unsigned int NUM = 500;
void simple()
{
using namespace std;
array<tuple<float, float, float>, NUM> vectors;
}
int main(int argc, char **argv)
{
std::cout << "Hello, world!" << std::endl;
return 0;
}
Я скомпилировал его с помощью g++ -std=c++0x
.
Эта версия работает нормально, но если я увеличиваю NUM
до 50 000 000, g++ использует 90% CPU, и моя система полностью зависнет.
Я понимаю, что во время выполнения программы может произойти сбой, если недостаточно памяти стека. Но почему компилятор замораживается во время компиляции?
Является ли это ошибкой в g++ или компилятор должен по какой-то причине выделять стек памяти во время компиляции?