Он прекрасно компилируется с g ++ 4.6.1 в моей системе Debian, которая имеет только 1 ГБ памяти.
Я пытался посмотреть на память, используемую различными проходами компилятора и компоновщика при изменении размерамассивов, и использование памяти не сильно изменилось, указав, что компилятор не пытался выделить какие-либо структуры данных, пропорциональные размеру массива.
Однако , у меня естьУстановлен новый компоновщик GNU "gold".
Затем я попробовал его снова, используя более старый (на основе BFD) компоновщик GNU, который все еще используется по умолчанию во многих системах, для этапа компоновки - и затем моя система начала работать как сумасшедшая (мне пришлось убить процесс компоновщика)!
Так что, похоже, новый золотой компоновщик умнее работает с большими массивами, чем старый компоновщик.* В Debian gold можно установить как системный компоновщик, просто установив пакет «binutils-gold».[Я не знаю, имеет ли Ubuntu такой же пакет, но поскольку Ubuntu основан на Debian, это кажется вероятным.]