如何诊断g ++错误" cc1plus.exe:内存不足分配838860800字节"在中等规模的项目?

时间:2015-03-22 12:16:38

标签: c++ gcc compilation g++

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

库本身编译正常,但是当我尝试将它包含在控制台iterface应用程序中时,编译器会崩溃并显示以下消息:

 cc1plus.exe: out of memory allocating 838860800 bytes

当我包含项目的主标题时(这是机器生成的并且未提交给repo,请参见here on Gist)。

我认为这是因为标题太大,但我注意到其他项目都有这样的无所不包的标题,并且不会遇到这些问题。我试图从标题中删除所有非必需品(大约1/3,其余部分是应用程序编译所必需的)并且问题仍然存在。我还注意到错误消息中的数字根本没有改变,所以我认为有一些奇怪的问题导致错误,而不是由于大量的代码引起的。

除了通常的STL之外,模板的使用非常少,而且我编写的代码似乎并不显着。

我在Windows 8.1 x64上的mingw32下使用g ++ 4.8.1,内存为16 GB。代码正在使用-std=c++98进行编译。

如何找到导致此问题的代码? g ++没有向我提供任何诊断信息来建议原因,即使使用-v开关({ {3}})。

1 个答案:

答案 0 :(得分:12)

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