У меня была похожая проблема (также перегруженная шаблоном), и я уже использовал /Zm1000
для компиляции своего кода (который работал изначально). Однако после очистки кода, деления длинных функций на более мелкие, размещения чего-либо в пространствах имен и т. Д. Компилятор выдаст сообщение об ошибке:
фатальная ошибка C1060: компилятору не хватает места в куче.
сразу после запуска, без каких-либо задержек (на самом деле ничего не компилируется). Сначала я был смущен, поскольку у меня есть 32 ГБ пространства подкачки, и в то время использовалось только около 6,1 ГБ. Я также использую операционную систему x64, поэтому для всех должно быть достаточно памяти и подкачки.
Я сослался на MSDN и обнаружил, что мне действительно нужно было понизить до /Zm800
, и теперь это прекрасно работает. Насколько я понимаю, что использование всего пространства кучи для предварительно скомпилированного буфера заголовка фактически блокирует пространство памяти; поэтому использование /Zm2000
оставит 32-битный компилятор без средств для динамического выделения памяти для других вещей (которые ему так или иначе нужны, что делает опцию /Zm
совершенно нелепой - используйте с осторожностью).
Я использую MSVC 6.0, но надеюсь, что это поможет и в 2010 году.