Поделиться через


Неустранимая ошибка C1076

ограничение компилятора: достигнут предел внутренней кучи; воспользуйтесь /Zm для задания большего значения

Эта ошибка может возникать при использовании слишком большого числа символов или создании слишком большого числа экземпляров шаблонов. Начиная с Visual Studio 2015, это сообщение может привести к нехватке виртуальной памяти Windows, вызванной слишком большим количеством параллельных процессов сборки. В этом случае рекомендация по использованию параметра /Zm должна игнорироваться, если вы не используете директиву #pragma hdrstop .

Устранение ошибки

  1. Если предкомпилированный заголовок использует #pragma hdrstop директиву, используйте параметр /Zm , чтобы задать ограничение памяти компилятора на значение, указанное в сообщении об ошибке C3859 . Дополнительные сведения о том, как задать это значение в Visual Studio, см. в разделе "Примечания" в разделе /Zm (указание ограничения выделения памяти предкомпилированного заголовка).

  2. Рассмотрите возможность уменьшения числа параллельных процессов, указанных с помощью параметра /maxcpucount , чтобы MSBUILD.EXE в сочетании с параметром /MP для CL.EXE. Дополнительные сведения см. в разделе о проблемах и рекомендациях с предварительной компиляцией заголовков (PCH).

  3. Если используются 32-разрядные размещенные компиляторы в 64-разрядной операционной системе, используйте 64-разрядные размещенные компиляторы. Дополнительные сведения см. в разделе "Практическое руководство. Включение 64-разрядного набора инструментов Visual C++ в командной строке".

  4. Удалите неиспользуемые включенные файлы.

  5. Удалите неиспользуемые глобальные переменные — например, вместо объявления большого массива можно использовать динамическое выделение памяти.

  6. Удалите неиспользуемые объявления.

Если C1076 происходит сразу после запуска сборки, то значение, указанное для /Zm , вероятно, слишком велико для программы. Уменьшите значение /Zm .