如何在中等规模的项目中诊断 g++ 错误 "cc1plus.exe: out of memory allocating 838860800 bytes"?
How to diagnose g++ error "cc1plus.exe: out of memory allocating 838860800 bytes" in moderately sized project?
我正在尝试移植我的 C++ library to g++ using rudimentary makefile(它在 Visual Studio 中编译得很好)。我现在尝试编译的部分大约有 45000 行代码。
库本身编译正常,但是当我尝试将它包含到控制台界面应用程序中时,编译器崩溃并显示以下消息,没有其他消息:
cc1plus.exe: out of memory allocating 838860800 bytes
当我包含项目的主要 header 时会发生这种情况(这是机器生成的并且未提交到 repo,请参阅 here on Gist)。
我认为这是因为 header 太大了,但我注意到其他项目也有 all-encompassing header 这样的问题并且没有遇到这些问题。我试图从 header 中剥离所有 non-essentials(大约 1/3,其余部分是应用程序编译所必需的),问题仍然存在。我还注意到错误消息中的数字根本没有改变,所以我相信有一些单一的问题导致了错误,而不是由大量的代码引起的。
除了通常的 STL 之外,几乎没有使用模板,而且我正在编译的代码似乎在任何方面都没有什么特别之处。
我在 Windows 8.1 x64 和 16 GB RAM 上使用 mingw32 下的 g++ 4.8.1。正在使用 -std=c++98
.
编译代码
如何找到导致此问题的代码? g++ 没有向我提供任何诊断信息来提示原因,即使 -v
切换 (here is what it returns).
当您尝试使用 gcc 编译保存在 Windows 中的 UTF-16 编码文件时,就会发生这种情况。将源编码更改为 UTF-8。参见 related CPP documentation。
我正在尝试移植我的 C++ library to g++ using rudimentary makefile(它在 Visual Studio 中编译得很好)。我现在尝试编译的部分大约有 45000 行代码。
库本身编译正常,但是当我尝试将它包含到控制台界面应用程序中时,编译器崩溃并显示以下消息,没有其他消息:
cc1plus.exe: out of memory allocating 838860800 bytes
当我包含项目的主要 header 时会发生这种情况(这是机器生成的并且未提交到 repo,请参阅 here on Gist)。
我认为这是因为 header 太大了,但我注意到其他项目也有 all-encompassing header 这样的问题并且没有遇到这些问题。我试图从 header 中剥离所有 non-essentials(大约 1/3,其余部分是应用程序编译所必需的),问题仍然存在。我还注意到错误消息中的数字根本没有改变,所以我相信有一些单一的问题导致了错误,而不是由大量的代码引起的。
除了通常的 STL 之外,几乎没有使用模板,而且我正在编译的代码似乎在任何方面都没有什么特别之处。
我在 Windows 8.1 x64 和 16 GB RAM 上使用 mingw32 下的 g++ 4.8.1。正在使用 -std=c++98
.
如何找到导致此问题的代码? g++ 没有向我提供任何诊断信息来提示原因,即使 -v
切换 (here is what it returns).
当您尝试使用 gcc 编译保存在 Windows 中的 UTF-16 编码文件时,就会发生这种情况。将源编码更改为 UTF-8。参见 related CPP documentation。