Udostępnij za pośrednictwem


Błąd krytyczny C1076

limit kompilatora : limit sterty wewnętrznej osiągnięty; użyj /Zm, aby określić wyższy limit

Ten błąd może być spowodowany przez zbyt wiele symboli lub zbyt wiele wystąpień szablonu. Począwszy od programu Visual Studio 2015, ten komunikat może wynikać z użycia pamięci wirtualnej systemu Windows spowodowanej zbyt wieloma równoległych procesów kompilacji. W takim przypadku zalecenie dotyczące używania opcji /Zm powinno być ignorowane, chyba że używasz #pragma hdrstop dyrektywy.

Aby rozwiązać ten błąd:

  1. Jeśli prekompilowany nagłówek używa #pragma hdrstop dyrektywy, użyj opcji /Zm , aby ustawić limit pamięci kompilatora na wartość określoną w komunikacie o błędzie C3859 . Aby uzyskać więcej informacji, które zawierają sposób ustawiania tej wartości w programie Visual Studio, zobacz sekcję Uwagi w /Zm (Określ wstępnie skompilowany limit alokacji pamięci nagłówka).

  2. Rozważ zmniejszenie liczby procesów równoległych określonych przy użyciu opcji /maxcpucount , aby MSBUILD.EXE w połączeniu z /MP opcji CL.EXE. Aby uzyskać więcej informacji, zobacz Prekompiled Header (PCH) issues and recommendations (Problemy i zalecenia dotyczące prekompilowanego nagłówka (PCH).

  3. Jeśli używasz kompilatorów dla hostów 32-bitowych w 64-bitowym systemie operacyjnym, użyj kompilatorów dla hostów 64-bitowych. Aby uzyskać więcej informacji, zobacz How to: Enable a 64-Bit Visual C++ Toolset on the Command Line (Instrukcje: włączanie 64-bitowego zestawu narzędzi Visual C++) w wierszu polecenia.

  4. Wyeliminuj niepotrzebne pliki dołączane.

  5. Wyeliminuj niepotrzebne zmienne globalne — na przykład poprzez przydzielanie pamięci dynamicznie zamiast deklarowania dużej tablicy.

  6. Usuń nieużywane deklaracje.

Jeśli C1076 występuje natychmiast po uruchomieniu kompilacji, wartość określona dla /Zm jest prawdopodobnie zbyt wysoka dla programu. Zmniejsz wartość /Zm.