如何在中等规模的项目中诊断g ++错误"cc1plus.exe: out of memory allocating 838860800 bytes"?



我正试图使用基本的makefile将我的C++库移植到g++(它在Visual Studio中编译得很好)。我现在试图编译的部分大约有45000行代码。

库本身编译正常,但当我试图将其包含到控制台iterface应用程序中时,编译器崩溃,只显示以下消息:

 cc1plus.exe: out of memory allocating 838860800 bytes

当我包含项目的主标题时就会发生这种情况(它是机器生成的,没有提交到repo,请在Gist上查看)。

我想这是因为标题太大了,但我注意到其他项目都有这样包罗万象的标题,不会遇到这些问题。我试图从标题中去掉所有非必要的部分(大约三分之一,其余部分是应用程序编译所必需的),但问题仍然存在。我还注意到错误消息中的数字根本没有改变,所以我相信是一些单一的问题导致了错误,而不是纯粹的代码量造成的。

除了通常的STL之外,很少使用模板,而且我正在编译的代码似乎在任何方面都不引人注目。

我使用的是g++4.8.1,在Windows8.1x64上的mingw32下有16GB的RAM。该代码正在使用-std=c++98进行编译。

如何查找导致此问题的代码g++不会为我提供任何诊断信息来提示原因,即使使用了-v开关(以下是它返回的内容)。

当您尝试使用gcc编译保存在Windows中的UTF-16编码文件时,就会发生这种情况。将源代码的编码更改为UTF-8。请参阅相关CPP文件。

最新更新