Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/141.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 如何诊断g++;“错误”;cc1plus.exe:分配838860800字节的内存不足”;在中等规模的项目中?_C++_Gcc_Compilation_G++ - Fatal编程技术网

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

C++ 如何诊断g++;“错误”;cc1plus.exe:分配838860800字节的内存不足”;在中等规模的项目中?,c++,gcc,compilation,g++,C++,Gcc,Compilation,G++,我正在尝试使用入门级(它在VisualStudio中编译得很好)将我的代码移植到g++中。我现在试图编译的部分大约有45000行代码 该库本身编译正常,但当我试图将其包含到控制台iterface应用程序中时,编译器崩溃,并显示以下消息,而没有其他消息: cc1plus.exe: out of memory allocating 838860800 bytes 当我包含项目的主标题时会发生这种情况(这是机器生成的,没有提交到回购协议,请参见) 我想这是因为标题太大了,但我注意到其他项目都有这样

我正在尝试使用入门级(它在VisualStudio中编译得很好)将我的代码移植到g++中。我现在试图编译的部分大约有45000行代码

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

 cc1plus.exe: out of memory allocating 838860800 bytes
当我包含项目的主标题时会发生这种情况(这是机器生成的,没有提交到回购协议,请参见)

我想这是因为标题太大了,但我注意到其他项目都有这样的包罗万象的标题,并且没有遇到这些问题。我试着从头文件中去掉所有非必要的部分(大约1/3,其余部分是应用程序编译所必需的),问题仍然存在。我还注意到错误消息中的数字根本没有改变,因此我认为是一些单一的问题导致了错误,而不是由大量的代码引起的

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

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


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

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

是否使用预编译头?如果删除
#pragma一次会发生什么情况?
?另一篇帖子:@MatějZábský:只运行预处理器看看是否有问题:将
-E
添加到命令行。如果可以的话,那么编译
.i
输出,这应该会导致原始问题。但是,您的代码(包含从gist中添加的include)在Linux下编译良好,使用g++-4.9修复了上述错误。谢谢!主标题确实是由我用来生成它的脚本用UTF16编写的。谁会想到不正确的编码会导致GCC分配800MB的RAM呢。