首页 > 解决方案 > MSVC C1060“编译器堆空间不足”,但仍有大量内存可用?

问题描述

我正在使用解析器组合器并且有一些模板繁重的代码(很多函数模板化在 lambdas 上)。当我尝试编译它时,cl.exe 运行高达大约 660 MB 的内存使用量(根据任务管理器),然后因“C1060:编译器堆空间不足”而失败。我的系统上有更多可用内存(16 GB + 交换文件,其中只有一半被其他进程使用),所以我不明白为什么会出现此错误。

我已阅读有关此问题的所有其他线程和MSDN 页面并尝试了他们的解决方案。

我正在使用 Visual Studio Community Edition 2019 v16.11.5 并使用 /std:c++20 进行编译,如果有必要的话。

我已经将我的代码粘贴到 Godbolt,虽然我不知道如何在 Godbolt 上使用多文件项目,所以这只是为了分享它。如果我注释掉 ExpandBrace.cpp 中的各个代码部分,它会在 MSVC 中成功编译,所以我认为这是一个实际的内存问题,与代码中的任何错误无关。

如果 cl.exe 在放弃之前使用更多内存,我很确定我的项目会编译,但我找不到任何方法来提高它的堆内存限制。

标签: c++visual-c++

解决方案


推荐阅读